A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© you7759 中级黑马   /  2014-12-14 19:50  /  437 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

8、使用@property声明一个属性,编译器会自动生成该属性的getter和setter方法的声明

在xcode4.5以后版本的编译器环境中,会自动在.m文件中生成该属性getter和setter方法的标准实现,不需显示声明用@synthesize来生成属性的getter和setter方法实现。


9、@property属性参数
1> nonatomic : 多线程环境下,不需要线程保护(读写时不加锁),
  atomic : (默认)多线程环境下需要线程保护(读写时加锁).
2> readonly : 表示在.m文件中只生成属性的getter方法的实现
  readwriter : 表示在.m文件中生成属性的getter和setter方法的实现(默认)
3> retain : 表示调用该属性的setter方法时,先release旧的值,再retain新的值。一般声明的成员变量是NSObject的子类才会添加该参数
  assign : 生成标准的getter和setter方法实现(默认),直接给属性赋值
4> getter= : 表示自定义属性生成的getter方法名称
  setter= : 表示自定义属性生成的setter方法名称

10、方法调用
* [实例对象 方法名:参数列表]
* [类名 方法名:参数列表]
例:
Student *stu = [[[Student alloc]init]autorelease];
[stu setAge:22 andNo:10];// 调用实例方法

[Student initWithAge:20];// 调用静态方法

11、点(.)语法
Student *stu = [[[Student alloc]init]autorelease];
stu.age = 20;  // 相当于调用了对象的setAge方法(写)
int age = stu.age;// 相当于调用了对象的getAge方法(读)

12、self关键字
相当于java中的this,不同的是self在不同的环境下,作用也不同。在实例方法中self可以当该对象使用,在静态方法中,self可以当类对象使用。
如:
- (void)age {
   return self.age;// 这里self是实例对象本身
}

+ (id)newInstace {
//Student *stu = [[[Student alloc]init]autorelease];
Student *stu = [[[self alloc]init]autorelease];// 这一句和上一句代码的效果是等效的,而在java语法是不允许this出现在静态方法中的
return stu;
}
  

13、@class : 在头文件中声明一个类的存在

为了提高效率,在只需要知道类的存在的情况下,不需要导入某个类的头文件。

// #import "Book.h"
@class Book;  // 不需要导入Book.h头文件,在.m文件真正使用的时候再导入
@interface Student : NSObject
@property Book *book;
@end

14、@protocol : 在头文件中声明一个协议的存在

目的和@class一样


15、^ : 定义一个Block类型,与标准C语法中指向函数指针类型的写法非常相似
如:定义一个sum的Block类型,返回值为int,有两个int形参
int (^sum) (int, int) = ^(int a, int b) {
return a + b;
};

16、#import : 用于导入一个类的头文件
#pragma mark : 写方法的注释
#pragma mark - : 方法注释分组
+ : 声明或定义一个静态方法
- : 声明或定义一个实例方法

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马