首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Objective-CObjective-C语言动态

Objective-C语言动态主要体现在以下3个方面   (1)动态类型:运行时确定对象类型。   (2)动态绑定:运行时确定对象方法。   ...,所以开发如果不是涉及到多态,尽量还是使用静态类型,这样编写错误,编译器会提前查出问题,可读更高一点。...三、动态加载   动态加载分为两部分:动态资源加载(如:图片资源),代码模块加载;这些都是在运行时根据需要有选择添加到程序,是一种代码和资源“懒加载”模式,这样降低编译时期对内存开销,提供程序性能...在消息传递机制,当开发者编写[receiver message:xxx]语句进行发送消息后,编译器都会将其转换成objc_msgSend C语言发送格式。...动态即OC动态类型、动态绑定、动态加载,将对象类型的确定、方法调用的确定、代码和资源转载推迟到运行时记性,灵活方便。

1.7K20
您找到你想要的搜索结果了吗?
是的
没有找到

Swift CGRect、CGSize 和 CGPoint(转)

从我决定拥抱 Swift 到现在已经 8 个月了。这几个月中,我一边学习着如何避免写出 Objective-C 风格 Swift 代码,一边真正开始使用这门新语言。...CGRect, CGSize, CGPoint C 语法 —— 披着羊皮狼 我相信下面这种写法,很多 Swift 开发者都会中枪,让我看见你们双手!...别担心,这没什么好害羞。 这样写是不对,它很不 Swift 范。虽然它并不影响程序本身,但是它看起来更有点 Objective-C 范,或者... Java 范。...Swift 在很多方面对初学者都很友好,无论你是刚接触 Swift,还是刚接触编程。如果让初学者看上面的代码,他可能完全不知道那些数字含义。...作为 Objective-C 开发者,我不得不写了快两年这样代码去修改 frame : objective-c CGRect frame = CGRectMake(0, 0, 100, 100); UIView

7.3K30

深入了解 iOS 初始化

作者 | Daniels 初始化 在 iOS 里面,无论是 Objective-C 还是 Swift,类(结构体、枚举)初始化都有一定规则要求,只不过在 Objective-C 中会比较宽松,如果不按照规则也不会报错...,但会存在隐患,而在 Swift 则需要严格按照规则要求代码才能编译通过,极大提高了代码安全。...Objective-C Objective-C 在初始化时,会自动给每个属性(成员变量)赋值为 0 或者 nil,没有强制要求额外为每个属性(成员变量)赋值,方便同时也缺少了代码安全。...Objective-C 还是 Swift ,都可以有多个指定初始化器和多个便利初始化器。...如果不是可以从多个不同源初始化,最好只创建一个指定初始化器 • 无论在 Objective-C 还是 Swift ,都需要在便利初始化器调用指定初始化器 • 在 Objective-C ,初始化时候不需要保证所有属性

95810

Objective-CNSInvocation使用

OC调用方法某个对象消息呦两种方式: #1. performanceSelector: withObject: #2. NSInvocation....但是这个方式最多只能传递2个参数 当需要2个以上参数时就只能用NSInvocation了 直接上代码吧, 会注释清楚 - (void)viewDidLoad { [super viewDidLoad...]; //用performanceSelector调用三个参数方法, 但只传递2个参数, 这样方法第三个参数会自动取我们传第二个值 [self performSelector...invocation.target = self; //设置方法名, 这里一定要跟方法签名类方法名一致 invocation.selector = @selector(printStr1...//此处不能通过遍历参数数组来设置参数,因为外界传进来参数个数是不可控 //因此通过numberOfArguments方法获取参数个数,是包含self和_cmd,然后比较方法需要参数和外界传进来参数个数

70820

Objective-C属性机制

Objective-C 2.0属性机制为我们提供了便捷获取和设置实例变量方式,也可以说属性为我们提供了一个默认设置器和访问器实现。...和setter来访问被隐藏实例变量,OC属性机制就为我们提供了默认getter和setter方法。...下面我们要学习一下OC属性机制。         ...    ​    ​    ​    ​    ​demo: @property (setter = setterName) NSString *name;     ​    ​2. property可读写...    ​    ​    ​property可读写决定属性是否有setter方法     ​    ​    ​(1)readwrite : 指定属性是可读写,这是默认值,因此可以省略     ​    ​    ​    ​    ​

1.3K70

Objective-C集合类

下面详细介绍Objective-C集合类以及每个集合类用法,学过其他面向对象编程语言小伙伴们看到OC集合类会有种莫名亲切感,理解起来问题不大,可以类比Java集合类去学习...在Objective-C集合类主要包括不可变数组--NSArray,  可变数组--NSMutableArray,   不可变字典--NSDictionary,    可变字典--NSMutableDictionary...一、数组         1.不可变数组  NSArray             数组是有序对象集合,用来存储对象有序列表,在OC数组必须存是对象,不能是基本数据类型,若想存入基本数据类型...: -(void) removeAllObjects;                 代码如下: 1 2 3 4 5 6 7 8 9 NSMutableDictionary *mulDictionary...OC集合类是不能放基本数据类型,那么我们如何把基本数据类型封装成对象呢?

1.1K70

Objective-C内存管理

OC中使用引用计数和垃圾回收来管理内存,在OC为每个对象分配一个引用计数器,当对象刚刚被创建时其初始值为1,当有某段代码需要访问一个对象是时,会将该对象引用计数器加1(通过retain来实现);当访问一个对象结束时...等方法,需要在XCode中进行设置,设置如下: 把Objective-C Automatic Reference Counting 改为NO,即可。     ​    ​...之前提到NSOject类里有个方法,retainCount可以获取当前对象引用计数值,废话少说上点代码吧。     ​    ​1....(3).在可变数组移除一个str,观察retainCount变化     ​    ​    ​(4)我们为什么要用可变字符串呢?稍后会提到为什么。...FomatRetainCount = 3 2014-08-03 20:18:37.240 Memory[2499:303] 传入变量RetainCount = 3     ​Objective-C

76490

Objective-Cruntime机制应用

Objective-Cruntime机制应用 一、初识runtime         Objective-C是一种动态语言,所谓动态语言,是在程序执行时动态的确定变量类型,执行变量类型对应方法...因此,在Object-C中常用字符串映射类技巧来动态创建类对象。因为OC动态语言特性,我们可以通过一些手段,在程序运行时动态更改对象变量甚至方法,这就是我们所说runtime机制。...,首先,在头文件没有提供任何方法接口,我们没有办法使用点语法做任何操作,privateOne和PrivateTow两个变量虽然声明在了头文件,却是私有类型,通过指针方式我们虽然可以看到他们,却不能做任何读取修改操作...,xcode提示如下: ?...,你或许会遇到一个问题,ARC下,编译器不允许你将int类型值赋值给id,在buildset中将Objective-C Automatic Reference Counting修改为No即可。

38550

Objective-CNSArray类解读

Objective-CNSArray类解读     NSArray数组类是Objective-C语言中常用也是重要一个类,除了开发中常用到一些基础功能,NSArray及其相关类还封装了许多更加强大功能...NSArray属性与方法: //获取数组中元素个数 @property (readonly) NSUInteger count; //通过下标获数组元素 - (ObjectType)objectAtIndex...:(NSUInteger)index; //初始化方法 - (instancetype)init; //通过C语言风格数组创建NSArray对象 需要注意,C数组需要为Objective对象,cnt...参数为C数组长度 //如果cnt值小于C数组长度,则会对C数据进行截取赋值,如果大于则程序会崩溃 - (instancetype)initWithObjects:(const ObjectType...C数组 objects参数需要为分配好空间C指针 - (void)getObjects:(ObjectType __unsafe_unretained [])objects range:(NSRange

1.2K20

Objective-CBlock(闭包)

看过Block部分,感觉Block挺好理解,用起来也挺顺手,Block没我想象那么难理解。         废话少说,学习一门新编程语言是少不了代码支持,所以代码是少不了。...下面就通代码来认识一下OCblock使用。   ...小伙伴们如果没大看懂下面的东西,请去上面的博客中进一部了解一下block.  1.局部变量可变对象和不可变对象在block引用             下面会提供一部代码,这部分代码功能是定义两个局部变量...:给定义各一个可变和不可变对象一个初始值,然后在调用代码时候修改两个局部变量值,然后再代码显示变量值。         ...2.成员变量在block使用     ​    ​成员变量在block使用是加上self->a使用,所以在声明成员变量时候加不加__block,在成员函数代码块中都可以访问修改;     ​    ​

1.4K90
领券