Objective C 以及 Xcode的总结

大纲


公有、私有
类方法、对象方法
对象用指针、原始类型
强指针、弱指针
发送消息
初始化:init     dealloc
              alloc   release
              retain +1
语法细节

1. for(xx in array)
2. @[xx,xx]数组
    @{key:v,…}字典
    @“…”string
     @() NSNumber
3. #import
4.  NSObject
     NSString
     NSArray:只能保存Objective C对象,不能存nil
     NSMutableSrting
     NSDictooinary
     NSNumber
     NSNull
     NSValue
     NSEnumerator:不能改变数组内容
     NSData:bits
     NSDate
     NSRange:只能为正数范围
     UIColor
     UIFont: preferredFontForTextStyle
5.  @interface A:NSObject
     @end
6.  @interface A()
     @end
     @implementation A
     @end
7. 对象在堆中,自动处理分配
8. 强指针:只要指向,便自动保存内容=》引用计数
9. @property
10. 对象方法
     发送消息[] 方法      . 属性
11.self自身
    super父类 
12.所有实例变量从0开始
13.NSLog
14:init:
{
     if (self = [super init]) {..} return self;
}
15. id:泛型,可以指向任何对象
16.description:类似toString
17.若只通过指针引用某类,可以用@class A;继承:必须import
18.除非名字里含有copy,否则返回指针
19. 初始化
[[xx alloc]init]
[[xx alloc]initWith:1 b:2]
[NSString stringWithFormat:@“%d”, 42] 
20.id不会产生警告,会crush
     NSString* 和id一样的,只是可能在编译器进行检查,产生警告
21. KVO:当制定对象的属性修改了,允许对象收到通知的机制
     Proxy类观察A
     Proxy类:[A AddObserver:self forKeyPath:…  ]成为A的观察者
                     ObserveValueForKeyPath:如何响应变化的消息,当A的被观察属性变动,会调用该方法
22. isKindOfClass
      isMemberOfClass
     respondsToSelector
23. 协议
@protocol xx<父亲protocol>
@end
NSObject protocol
NSObject类
NSProxy protocol更简单
@interface A:NSObject<xx>
@end
或者@interface A():<xx> 在.m中
24. 代码块(类似函数指针)
^(参数列表) {内容}
可以访问与其同时定义的本地变量作为常量(复制并保存变量的状态)
作为变量,需声明_block a = 3;再在block中用
可作为参数
block中的东西都会存一个强指针—>若将block存储,容易产生循环引用
__weak class* c = self —>不会产生循环引用了
25. 多线程(Grad Central Dispatch)
提交代码块或者函数作为线程运行
nonatomic:互斥的getter和setter
方法:
  1. performSelectorInBackground: @selector withObject:nil/xxx
  2. 队列:dispatch_async异步调用,dispatch_sync同步调用
    1. dispatch_queue_create
    2. dispatch_get_global_queue
    3. dispatch_get_main_queue
    4. dispatch_get_current_queue
  3. NSOperationQueue:更加可控
26. 类别:为现有类提供新方法,类扩展,无需再()中加东西,用于一个类分块实现@interface A(xx/空)
27. 委托:一种对象(委托对象1),有另一个类(TableView2)请求执行某些工作
2向1发送消息:(bool) tableView:v shouldSelectRow:r
1告诉2返回值
例子:1Finder,符合一个BrowserDelegate协议
          2browser,设Finder为Delegate: browser setDelegate:finder
          browser做一些事,调用1的某些方法
28. selector: resondsToSelector:@selector(f1: xx:)
performSelector: withObject:
[array makeObjectsPerformSelector: withObject:]
[btn addTarget:object action:@selector]
29. struct->string
      string->struct
30. [NSUserDefault standardUserDefault]
     setArray forKey
     setDouble forKey
     setInteger forKey
     setObject forKey
     arrayForKey…
     synchronize
31 NSAttributeString:不可修改
    (NSDictionary*)  attributesAtIndex:  effectiveRange
     可以查找,如果要保存查找的结果,需要copy一份
     
快捷键

1. control+拖控件:添加时间属性
2. option+点击:help
3.cmd+点击:查看内容
ctrl A:行首
ctrl E:行尾
ctrl T:交换
ctrl D:删除后面的
ctrl K:删除后面的所有
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值