object-c基础
JYoung_Li
撸码之路漫漫,全栈只是个传说。
展开
-
#import和#include
为什么要使用#import?import引入的头文件,可以防止重复包含include它是使用预处理之灵防治重复包含,如果没有写预处理指令,则无法防止重复包含问题原创 2015-09-27 16:16:28 · 509 阅读 · 0 评论 -
object-c中私有方法
#import "Person.h"@implementation Person- (void)run{ Person *p1 = [Person new]; [p1 test]; // 能用self访问 [self test]; NSLog(@"人在走"); }// test方法,没有在.h文件中声明,在.m中实原创 2015-09-29 14:57:11 · 288 阅读 · 0 评论 -
传统的get和set方法
#import #import "Person.h"int main(int argc, const char * argv[]) { @autoreleasepool { Person *p = [Person new]; // [p setAge:18];// [p setName:@"张三丰"];原创 2015-09-29 16:34:50 · 712 阅读 · 0 评论 -
类的本质
#import #import "Dog.h"int main(int argc, const char * argv[]) { @autoreleasepool { Dog *d = [Dog new]; [d test]; // 对象方法 [Dog test]; // 调用类方法原创 2015-09-29 16:16:27 · 492 阅读 · 0 评论 -
SEL的使用
#import #import "Person.h"int main(int argc, const char * argv[]) { @autoreleasepool { Person *p = [Person new];// [p test]; // 手动的把test方法包装成SEL类型 // SEL:全称sele原创 2015-09-29 16:20:46 · 610 阅读 · 0 评论 -
动态类型的检测
#import #import "Dog.h"int main(int argc, const char * argv[]) { @autoreleasepool { Animal *ani = [Animal new]; Dog *dog = [Dog new]; // ani 是否是 Animal原创 2015-09-29 16:44:04 · 676 阅读 · 0 评论 -
重写构造方法
#import "Person.h"@implementation Person// 当子类把父类的init覆盖了,这时默认的先执行子类的- (instancetype)init{ // 先让父类把父类原来做的事情做完 // 判断父类是否初始化成功 if(self = super init){ // 此处写子类初始化的内容原创 2015-09-29 17:09:25 · 545 阅读 · 0 评论 -
判断对象能否响应指定的方法
#import #import "Dog.h"int main(int argc, const char * argv[]) { @autoreleasepool { // 动态类型检测的第二部分 // 1. 方法响应的检测 Animal *ani = [Animal new]; //原创 2015-09-29 16:50:31 · 543 阅读 · 0 评论 -
description方法介绍及重写
#import int main(int argc, const char * argv[]) { @autoreleasepool { /* // 查看对象地址 NSLog(@"d = %p" ,d); // 类名: 对象地址 NSLog(@"%@", d);原创 2015-09-29 15:01:11 · 2548 阅读 · 0 评论 -
自定义构造方法
#import "Person.h"@implementation Person- (instancetype)initWithName:(NSString *)name andAge:(int)age{ if (self = [super init]) { _name = name; _age = age; } return se原创 2015-09-29 17:21:51 · 493 阅读 · 0 评论 -
多态的实现
#import #import "Dog.h"#import "Cat.h"int main(int argc, const char * argv[]) { @autoreleasepool { //************ 没有使用多态*********// Animal *ani = [Animal new];// [ani r原创 2015-09-29 16:08:31 · 442 阅读 · 0 评论 -
响应有参方法
#import #import "Dog.h"int main(int argc, const char * argv[]) { @autoreleasepool { // 动态类型检测 :响应方法 Animal *ani = [Dog new]; SEL s1 = @selecto原创 2015-09-29 16:57:53 · 719 阅读 · 0 评论 -
类对象的使用
#import #import "Person.h"int main(int argc, const char * argv[]) { @autoreleasepool { // 获取类对象 Class c1 = [Person class]; // 使用类对象创建实例对象 Perso原创 2015-09-29 16:19:10 · 329 阅读 · 0 评论 -
类方法
// 对象方法中可以调用其他的对象方法// 1)当前对象方法中创建对象,使用新创建的对象调用对象方法// 2)可以使用self// 3)对象作为方法的参数传递过来,可以使用传递过来的对象调用方法// 类方法的优点:// 1)节省内存空间// 2)提高了效率// 3)作为工具方法// 匿名类(匿名对象)// 1. 使用匿名类访问实例变量(能,只能访问一次)// 以后原创 2015-09-27 17:48:24 · 334 阅读 · 0 评论 -
object-c中对象创建
/* OC中对象创建 [Car new] // 做了3件事 // 1)向计算机申请内存空间 // 2)给类中的每一个成员初始化值 // 3)返回新申请的空间的首地址 // 理解方式一: // 定义了一个Car类型的指针变量原创 2015-09-27 16:32:16 · 498 阅读 · 0 评论 -
object-c结构体赋值
#import typedef struct{ int year; int month; int day; }MyData;// Student@interface Student : NSObject{ @public; NSString *_name; MyData _birthd原创 2015-09-27 16:52:39 · 537 阅读 · 0 评论 -
NSLog和print使用的差异
// NSLog和print使用的差异 // 1. NSLog会自动换行 而printf不会自动换行 // 2. NSLog会自动输出时间等项目信息,printf不会输出调试信息 // 3. NSLog函数的参数是一个NSString对象 // printf是一个字符串常量指针 // OC用%@输出字原创 2015-09-27 16:20:21 · 764 阅读 · 0 评论 -
NSString类的介绍和用法
// 1. 创建一个字符串 NSString *s = @"xxxxxx"; // 特殊用法 // 2. 输出一个字符串 NSLog(@"%@", s); // NSString是一个类 NSString *s1 = [NSString new]; s1 = @"ji原创 2015-09-27 17:10:43 · 492 阅读 · 0 评论 -
封装的概念和原理,set和get方法
.h文件#import typedef enum {kSexMan, kSexWoman, kSexYao} Sex;@interface Person : NSObject{ // 姓名 NSString *_name; // 年龄 int _age; // 性别 Sex _sex; // 身高 float _heig原创 2015-09-27 18:04:14 · 1298 阅读 · 0 评论 -
self在类方法中的使用
@implementation Person+ (void)test{ NSLog(@"+test!");}+ (void)run{ NSLog(@"人在走"); // self指代的是当前的类 NSLog(@"self = %p", self); // 使用类调用类方法 [self test];}@end原创 2015-09-27 20:18:01 · 392 阅读 · 0 评论 -
Foundation/Foundation.h 是什么东西?
Foundation/Foundation.h 是什么东西 头文件 头文件的位置 文件包含了其他的大量的头文件 作用:把Foundation.h引入了,等于把OC的库文件都引过来了原创 2015-09-27 16:18:33 · 2686 阅读 · 0 评论 -
NSString字符串长度计算方法
// 计算NSString 字符串的长度 // 1)字符串是纯英文 NSString *s1 = @"wadefwfafaef"; NSUInteger len = [s1 length]; NSLog(@"len = %ld", len); // 2)字符串是纯中文原创 2015-09-27 17:12:40 · 599 阅读 · 0 评论 -
object-c中类的声明和实现
/* 类: 一类事物共同特征和行为的抽象 大卡车 小轿车 挖掘机 共同特征: 颜色 速度 轮子 共同的行为: 跑 停止 对象: 类的具体的个体 类的定义分为两部分: 1)类的声明(规定当前类原创 2015-09-27 16:30:06 · 533 阅读 · 0 评论 -
object-c Person类实现和分析
/* [Person new] 做了3件事 // 1)申请内存空间 // 2)给实例变量初始化 // 3)返回空间的首地址 // 1. 申请的空间在内存的哪个区? // new 的时候申请的空间在内存的堆区(程序动态分配的内存空间) // 当new的时候内存的布局是这么样的 // 初始化的时候:如果实例变量原创 2015-09-27 16:50:14 · 500 阅读 · 0 评论 -
实例变量的修饰符
// @public 公开的,在任何地方都可以使用// @protected 受保护类型,表示只能在当前类和子类中访问// @private 私有的,只能在当前类的对象中使用 /* @private 类型的变量,能否被子类继承 子类可以继承父类的所有的实例变量和方法 但是,不是所有的都可以访问原创 2015-09-28 18:31:55 · 623 阅读 · 0 评论 -
OC中的异常捕捉机制
// 异常:程序运行的时候有bug// 捕捉机制:排除错误 @try { // 此处放的事有可能出错的代码 } @catch (NSException *exception) { // 此处放出错以后 我们处理的代码 NSLog(@" %@", exception); // 打印出错误的信息 }原创 2015-09-27 16:24:00 · 1011 阅读 · 0 评论 -
@property的增强使用
#import @interface Person : NSObject// @property 的增强// xcode4.4之后,可以只使用@property 而不使用 @synthesize// 声明和实现了 _age , _name的get和set方法// 操作的是带有下划线的实例变量// 如果我们是当前类,没有下划线的实例变量,则系统会帮我们生成@property int a原创 2015-09-29 16:40:18 · 1098 阅读 · 0 评论