iOS 开发小记 (八)

过完年,整理下最近遇到的问题。

1,通过runtime动态添加Ivar

优点:动态添加Ivar我们能够通过遍历Ivar得到我们所添加的属性。

缺点:不能在已存在的class中添加Ivar,必须通过objc_allocateClassPair动态创建一个class,才能调用class_addIvar创建Ivar,最后通过objc_registerClassPair注册class。

参考

如何添加 http://blog.csdn.net/majiakun1/article/details/38510595

关联属性 http://www.cnblogs.com/wengzilin/p/4331685.html

2,Objective-C 语言特性

Key-Value Coding 键值编码 (KVC)

OC各个版本之间的差异:

  • Objective-C: a C-style programming language with Smalltalk-style messaging.
  • Objective-C++: a GCC front-end which adds to C++ the extensions Objective-C adds to C.
  • Objective-C 2.0: a revision of the Objective-C language that includes modern garbage collection, syntax enhancements, runtime performance improvements and 64-bit support. Also adds features such as properties and fast enumerators.

3,编译时标志-objc 的作用

Objective-C没有为每个函数(或者方法)定义链接符号,它只为每个类创建链接符号。这样当在一个静态库中使用类别来扩展已有类的时候,链接器不知道如何把类原有的方法和类别中的方法整合起来,就会导致你调用类别中的方法时,出现"selector not recognized",也就是找不到方法定义的错误。为了解决这个问题,引入了-ObjC标志,它的作用就是将静态库中所有的和对象相关的文件都加载进来。

参考 http://www.th7.cn/Program/IOS/201403/181096.shtml

时间: 2024-10-19 04:23:42

iOS 开发小记 (八)的相关文章

从零开始学ios开发(八):Autorotation and Autosizing

不好意思,这一篇间隔的时间有点长,最近实在是事情太多,耽搁了,好了,长话短说,下面继续学习ios. 这次学习的内容是Autorotation和Autosizing,Autorotation就是屏幕内容自动旋转,因为iphone有重力感应系统(陀螺仪???),屏幕的内容会随着用户手握iphone的方式(竖着握Portrait.横着握Landscape)而改变,这个相信大家都已经有所体会,Autosizing是指当iphone的屏幕旋转后,屏幕里面控件的大小和位置也会自动改变.好了,下面跟着例子继续

IOS开发小记

1. 在view之间添加分割线的注意 第一种情况没有什么特别的,view之前是独立的,没有位置重合的情况. 第二中有重合区域,这里要注意的是,在iPad下如果分割线的宽度设置小于1,会出现显示在view进去视图的时,闪现一下,然后不可见. IOS开发小记,布布扣,bubuko.com

iOS 开发小记 (九)

1,GCD的Concurrent.Serial queues Concurrent queues (also known as a type of global dispatch queue) execute one or more tasks concurrently, but tasks are still started in the order in which they were added to the queue. The currently executing tasks run

iOS 开发小记 (十)

2016年02月22日 - 元宵节 今日面试,有三个题目让我不太确定: 1,oc的协议和java的接口有何不同? oc的@protocol 有 @required 和 @optional. 2,UIView 和 CALayer有何区别? a.UIView可以响应事件,CALayer不行: b.UIView是对显示内容的管理,CALayer是对显示内容的绘制: c.每个UIView内都有一个CALayer提供内容的绘制和显示,view.frame简单的返回了view.layer.frame. ht

ios 开发小记 (三)

platform :ios, '7.0' pod "AFNetworking", "~> 2.0" pods 文件原来是这样. 在用了xctest之后,就报错了:AFNetworking Cause Error while using XCTest in Xcode5. 要在中间加一句: link_with 'Supermark', 'SupermarkTests' -objc 的意思: 之所以使用该标志,和Objective-C的一个重要特性:类别(cate

iOS开发小记(十三)

1.软编码和硬编码如何区分 软编码:使用CPU进行编码 硬编码:使用非CPU进行编码,如显卡GPU.专用的DSP.FPGA.ASIC芯片等 2.连续的动画 NSOperationQueue 串行UIview和CAlayer 的动画 3.UIImageView UIImageView setAnimationImages 和 startAnimating 搭配使用 4.类加载函数 +(void)initialize Thus the method may never be invoked if t

iOS开发-UI (八)TableView

知识点: 1.UITableView使用 2.UITableView分段功能 3.UITableViewCell重用机制 ======================= UITableView使用 1.UITableView作用 2.UITableView创建 - (id)initWithFrame:(CGRect)frame style:(UITableViewStyle)style; UITableViewStyle: UITableViewStylePlain       列表模式 UIT

iOS 开发小记 (七)

最近要换地方工作了,整理下之前遇到的问题. 1.StatusBar View controller-based status bar appearance 状态栏属性设置后,plist修改后才有效. 2.Auto Layout Hugging priority 确定view有多大的优先级阻止自己变大. Compression Resistance priority确定有多大的优先级阻止自己变小. 简单来说,Hugging的收缩的意思,就是当有A,B两个元素连在一起,当他们的superView变大

ios 开发小记 (二)

identity inspector 的key path 可以用来做圆角按钮和边框. layer.cornerRadius number  圆角按钮 使用代理模式的时候,要注意,A 和 B的引用之间会循环引用,导致内存无法回收. 可以使引用设置为weak. navigationBar 默认是透明的,颜色会进行高斯模糊处理.所以直接用RGB颜色赋值,最后的颜色效果会稍微淡一些. 解决方案:最开始的navigationBar设置为opaque. ios3.0 以后 苹果的sdk对这种情况做了调整,如