语言: Objective - C.
类文件分为 .h以及.m
.h文件作用为定义文件, .m文件作用为声明文件.类有两个大的分区. 一个是interface, 一个是implementation
声明变量的时候, 前缀加上@property, 编译器会自动生成getter以及setter.
声明变量的时候, 类型分为strong 以及weak.
objectivec把所有的变量都存在堆中. 用strong可以显示控制变量声明周期.
当使用strong标签时. 直到变量被赋值为nil, 否则都不会被系统回收掉.
weak则不然, 当检测没有引用时, 就会被系统回收掉
(是实时回收吗? 我要查一下.)声明方法的时候, 前面要加一个 "-" 好奇葩.
方法所需参数不用()来包起来, 而是:xx
例:
- (int)match:(Card*)card;
这就是在声明一个名为match, 参数为类型Card, 返回值为int的一个方法..
(⊙o⊙)哦 好奇葩.
只有需要访问getter以及setter的时候才使用".", 其他时间都是一个空格就可以了
例
card.contents. 这样就是在访问card的getter
card.contents isEqualToString:self.contents 这样就是在用content(类型为NSString)的isEqualToString方法来进行匹配.当用[]包起来的时候, 意思就是向某个对象发送消息.
例
[card.contents isEqualToString:self.contents]
这样是在把isEqualToString这个消息发给contents的getter.当一个方法有多个参数的时候. 这样写:
例. 我想写一个方法名为testfunc, 返回值为void, 参数1类型为NSInteger, 参数2类型为NSString. 那么应该如此实现:
- (void)testfunc (NSInteger)arg1 (NSString)arg2;
- 想声明一个private类型的变量时. 应该写在.m文件里的interface下.
例. 我想声明一个 类型为NSArray的变量
@interface xx
@property(strong) NSArray * tmp;
@end
@implementation
- (NSArray) tmp
{
return _tmp;
}
@end
// lazy way:
@implementation
- (NSArray) tmp
{
if(!_tmp)
{
_tmp = [[NSArray alloc] init]
}
return _tmp;
}
@end
@[] 意义为 创建一个数组.
@"" 意义为创建一个常量
这两个其实都是notation, notation意义为向某个对象发送某消息.在.m文件里自动生成setter 以及getter
@synthesize xxoo = _xxoo;