[Objective-c 基础 - 2.2] OC弱语法、类方法

A.OC弱语法

1.在运行的时候才会检查方法的声明和实现

2.没有声明只有实现的方法也能正常运行,只要在调用之前定义即可

3.类的声明必须存在,否则会出现运行时错误

B.类方法

1.是类名调用的方法

2.使用加号修饰的方法

3.类方法和对象方法可以重名

4.对象方法和类方法都允许多次声明,都不允许多次定义

5.类方法不能访问实例变量

 1 #import <Foundation/Foundation.h>
 2
 3 @interface Person : NSObject
 4 - (void) test;
 5 - (void) test:(int) ab;
 6 + (void) test;
 7
 8 @end
 9
10
11 @implementation Person
12 - (void) test
13 {
14     NSLog(@"调用了对象方法test");
15 }
16
17 - (void) test:(int) a
18 {
19     NSLog(@"%d", a);
20 }
21
22 + (void) test
23 {
24     NSLog(@"调用了类方法test");
25 }
26
27 @end
28
29
30 int main()
31 {
32     [Person test];
33
34     Person *p = [Person new];
35     [p test];
36     [p test:22];
37     return 0;
38 }

时间: 2024-10-22 11:22:27

[Objective-c 基础 - 2.2] OC弱语法、类方法的相关文章

OC弱语法

OC是在运行过程中才会检测对象有没有实现相应的方法,所有编译过程只给出警告:可能找不到对应方法: 如果程序在运行过程中出错,就会出现程序闪退: 类方法:类可以直接调用的方法,相当于java中的静态方法,但是类方法只能类调用,对象无法调用 以+开头的方法都是类方法. 对象方法: 1,以 ‘-’ 开头 2,只能由对象调用 3,对象方法只能调用当前对象的实例变量或成员变量 类方法: 1,以‘+’开头 2,只能由类调用 3,类方法不能调用实例变量或成员变量 可以允许类方法 和 对象方法同名 类方法的好处

黑马程序员----OC的弱语法

OC弱语法 OC在运行过程中才会检测对象有没有实现相应的方法(动态监测),而即使没有写方法的实现代码,在编译.连接过程中只会有警告,运行时会奔溃,如果在手机上运行这样的代码,运行过程中就造成闪退! 1.如果对象调用了一个既没有声明又没有实现的方法test,编译能通过(有警告:warning: 'Person' may not respond to 'test'),但是还是能连接成功,但是运行时会出现下面的经典错误: 经典错误:不能识别消息发送给对象(运行时会监测方法有没有实现),会使程序运行时自

iOS开发——面试篇&amp;OC基本语法总结(面试)

OC基本语法总结(面试) C和OC对比 OC中主要开发在什么平台上的应用程序? 答:可以使用OC开发Mac OS X平台和iOS平台的应用程序 OC中新增关键字大部分是以什么开头? 答:OC中新增关键字大部分是以@开头 OC中新增加了那些数据类型? 答: Block类型 指针类型(Class, id类型) 空类型 特殊类型(SEL, nil) 面向对象特性是什么? 答:继承性,封装性,多态性 import和#include有什么区别? 答:import 的功能和 include一样, 是将右边的

oc语言--语法

一.OC简介 1.简介 它是C语言的基础上,增加了一层面向对象语法 OC完全兼容C语言 可以在OC代码中混入C语言代码,甚至是C++代码 可以使用OC开发mac OS X平台和IOS平台的应用程序 2.关键字 1> 基本上所有的关键字都是以@开头 2> 关键字 @interface.@implementation.@end @public.@protected.@private.@selector @try.@catch.@throw.@finally @protocol.@optional.

Swift与OC的语法简单对比

01-常量与变量   学习swift第一步打印Hello World print("Hello World") swift是不用加分号的 什么是常量? 常量是在程序运行过程中不能改变值的量 什么时变量? 变量是可以在程序运行过程中不断变化的量 在swift当中常量和变量必须在使用前声明 用let来声明常量,用var来声明变量 常量定义方式: 可以用任何你喜欢的字符作为常量和变量名,包括Unicode字符 常量与变量名不能包含以下: 数学符号,箭头,保留的(或者非法的)Unicode码位

OC点语法和变量作用域

OC点语法和变量作用域 一.点语法 (一)认识点语法 声明一个Person类: 1 #import <Foundation/Foundation.h> 2 3 @interface Person : NSObject 4 { 5 int _age;//默认为@protected 6 } 7 8 - (void)setAge:(int)age; 9 - (int)age; 10 11 @end Person类的实现: 1 #import "Person.h" 2 3 @imp

【黑马程序员】————OC特有语法

一.点语法 点语法的本质还是方法调用 p.age = 10; // [p setAge:10]; int a = p.age; // [p age]; 二.成员变量的作用域 @public : 在任何地方都能直接访问对象的成员变量 @private : 只能在当前类的对象方法中直接访问(@implementation中默认是@private) @protected : 可以在当前类及其子类的对象方法中直接访问 (@interface中默认就是@protected) @package : 只要处在

OC中语法糖,最新语法总结

<span style="font-size:24px;"> 1.方法与顺序无关 2.枚举绑定数据类型 enum { ObjectiveC, Java, Ruby, Python, Erlang }; typedef NSUInteger Language; 3. 属性不用写@synthesize 4.语法简化 4.1 NSNumber NSNumber *value; value = @12345; value = @123.45f; value = @123.45; v

黑马程序员-OC特有语法:分类category,给NSString增加方法计算字符串中数字的个数

1:分类的使用场景:想对一个类,扩充一些功能,而又不改变原来类的模型,也不用继承,这时OC中的特有语法:分类可以做到: 当然分类也是一个类,也需要声明和实现,声明在.h文件中,实现在.m文件中,格式如下 // 声明 @interface  类名  (分类名称) @end // 实现 @implementation 类名 (分类名称) @end 2:分类的好处,当一个类比较庞大时,不同的部分可以放到不同的分类中,也方便团队中类的开发: 3:分类使用注意: a:分类不能增加成员变量,只能对原类增加方