
OC
PGzxc
应用开发者
展开
-
OC开发之——NSDate(60)
一 概述OC中操作时间的类是NSDate,本文介绍NSDate相关的操作:获取当前时间NSDate转NSStringNSString转NSDate二 获取当前时间NSDate *date=[NSDate date];NSLog(@"当前时间是%@",date); NSDate *date2=[NSDate dateWithTimeInterval:5 sinc...原创 2020-04-21 23:41:35 · 387 阅读 · 0 评论 -
OC开发之——NSNumber和NSValue(59)
一 概述 @{ @"name":@"jack", @"age":10 };我们上节使用@{}来表示dictionary,但是"@age:10"却会出现错误,因为不能使用基本数据类型(10),需要将基本数据类型包装成对象,这就用到了本课中的NSNumber二 NSNumber2.1 NSNumber说明NSNumber类能够通过一种基本数据类型生成NSNum...原创 2020-04-21 23:40:38 · 310 阅读 · 0 评论 -
OC开发之——NSDictionary(58)
一 概述NSDictionary又叫字典,类似于Java中的Map集合,一个key,有且只有一个对应的valueNSDictionary是不可变的,一旦初始化完毕后,里面的内容就无法修改NSMutableDictionary是可变的,可向集合中添加新数据二 NSDictionary的操作NSDictionary *dict=[NSDictionary dictionaryWithO...原创 2020-04-20 23:37:52 · 334 阅读 · 1 评论 -
OC开发之——NSSet(57)
一 概述本文介绍NSSet与NSArray共同点:都是结合,都能存放多个OC对象只能存放OC对象,不能存放非OC对象类型(基本数据类型:int,char,float等,结构体,枚举)本身都不可变,都有一个可变的子类不同点:NSArray有顺序,NSSet没有顺序二 示例#import <Foundation/Foundation.h>int main(i...原创 2020-04-19 23:30:22 · 263 阅读 · 1 评论 -
OC开发之——NSMutableArray(56)
一 概述NSMutableArray与NSArray的区别:NSMutableArray:可变数组NSArray:不可变数组二 示例#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * argv[]) { @autoreleasepool {...原创 2020-04-19 23:29:23 · 187 阅读 · 0 评论 -
OC开发之——NSArray(55)
一 概述本文介绍集合中的数组:NSArray二 代码示例#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... //array创建 NSArr...原创 2020-04-19 23:28:11 · 222 阅读 · 0 评论 -
OC开发之——NSMutableString(54)
一 概述NSString与NSMutableString的区别:NSString:不可变字符串NSMutableString:可变字符串二 示例2.1 代码#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { ...原创 2020-04-19 23:27:31 · 220 阅读 · 0 评论 -
OC开发之——Foundation中的NSString(53)
一 概述本文介绍NSString中相关的操作如:NSString的创建OC中NSString和C中字符串的转换读取文本中的字符串和写入字符串二 NSString的创建//NSString的创建NSString *s1=@"jack";NSString *s2=[[NSString alloc]initWithString:@"jack"];NSString *s3=[[NS...原创 2020-04-19 23:26:53 · 170 阅读 · 0 评论 -
OC开发之——Foundation中常用结构体(52)
一 概述本文介绍Foundation框架中的结构体:NSRangeNSPoint\CGPointNSSize\CGSizeNSRect\CGRect二 NSRange2.1 定义typedef struct _NSRange { NSUInteger location; NSUInteger length;} NSRange;2.2 使用 NSRang...原创 2020-04-19 23:26:25 · 215 阅读 · 0 评论 -
OC开发之——协议protocol(51)
一 协议的用途可以用来声明一大堆方法(不能声明成员变量)只要某个类遵守了这个协议,就相当于拥有这个协议中的所有方法声明只要父类遵守了某个协议,就相当于子类也遵守了二 格式2.1 协议的编写@protocol 协议名称//方法声明列表@end2.2 某个类遵守协议@interface 类名:父类<协议名称>@end三 关键字协议中有2个关键字可以控制方...原创 2020-04-18 23:47:25 · 377 阅读 · 0 评论 -
OC开发之——重命名项目名(50)
一 概述本文介绍xcode如何修改项目名称二 名称修改过程2.1 修改前如图所示:为项目修改前的名字(renameBefore)2.2 修改过程在项目名称上点击回车键,重新命名为renameAfter命名后再按回车键确认同理,修改文件夹的名字同理,点击运行图标右侧的Manager Schemes,重新命名...原创 2020-04-18 23:46:54 · 1059 阅读 · 0 评论 -
OC开发之——block(49)
一 概述Block封装了一段代码,可以在任何时候执行Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值苹果官方建议尽量多用block。在多线程,异步任务,集合遍历,集合排序,动画专场用的很多二 Block的定义2.1 定义实例int (MySum)(int,int)=^(int a,int b){return a+b;};2.2 定义说明定义一个...原创 2020-04-18 23:46:24 · 204 阅读 · 0 评论 -
OC开发之——ARC循环引用(48)
一 概述我们知道两个非ARC类相互引用时,会出现错误,将import改为@class引用,可以避免此类现象的发生,那么ARC中两个类相互引用时,是否也会发生循环引用问题???二 ARC中两个类相互引用代码2.1 Person类//Person.h#import <Foundation/Foundation.h>@class Dog;@interface Person :...原创 2020-04-17 23:20:22 · 280 阅读 · 0 评论 -
OC开发之——ARC和非ARC转换(47)
一 概述非ARC部分文件使用ARC非ARC项目转换成ARC项目ARC项目部分文件使用非ARC二 查看项目是否是ARC项目点击项目名称,右侧默认切换到PROJECT下的Basic标签切换到Customized标签,在右侧输入框中输入ARC,查看Objective-C Automatic Reference Counting 右侧是Yes(ARC)还是No(非ARC)...原创 2020-04-17 23:19:20 · 439 阅读 · 0 评论 -
OC开发之——内存管理ARC(46)
一 ARC介绍ARC是自iOS5之后增加的新特性,完全消除类手动管理内存的繁琐,编译器会自动在适当的地方插入适当的release,retain,autorelease语句。你不再需要担心内存管理,因为编译器为你处理了一切ARC是编译器特性,而不是iOS运行时特性,它也不是类似其他语言中的垃圾收集器。因此ARC和手动内存管理性能是一样的,有时还能更加快速,因为编译器还可以执行某些优化二 ...原创 2020-04-16 23:10:46 · 218 阅读 · 0 评论 -
OC开发之——内存管理autorelease实际应用(45)
一 概述本文是一个autorelease应用示例,并为类添加一个快速创建对象的类方法。二 代码示例2.1 Person类//Person.h#import <Foundation/Foundation.h>@interface Person : NSObject@property (nonatomic,assign) int age;+(id)person;+(id...原创 2020-04-15 23:49:39 · 182 阅读 · 0 评论 -
OC开发之——内存管理autorelease(44)
一 概述不使用ARC,自己管理内存,可以通过@property和@retain实现代码优化,可以依然需要在main.m调用结束后,使用[对象 release]来释放内存,不然会有僵尸对象产生。通过本文autorelease的学习将解决这一问题。二 代码示例2.1 Person类//Person.h#import <Foundation/Foundation.h>@inte...原创 2020-04-15 23:49:02 · 199 阅读 · 0 评论 -
OC开发之——内存管理循环retain(43)
一 使用场景对于循环依赖关系来说,比方A类引用B类,同时B类也引用A类,这时代码编译会报错当使用@class在两个类相互声明,就不会出现编译报错二 代码实例2.1 Person类//Person.h#import <Foundation/Foundation.h>@class Car;@interface Person : NSObject@property (...原创 2020-04-14 23:35:14 · 280 阅读 · 0 评论 -
OC开发之——内存管理模型设计(42)
一 概述设计一些类,可以自行建立每个类之间的联系,尽量用面向对象的思想思考问题:设计一个类表示一条微博,包含以下属性(发送时间属性可以忽略),微博内容,微博配图,发送时间,微博发送人,转发的微博,被评论数,被转发数设计一个微博用户类,包含以下属性:姓名,微博号码,密码,头像,性别,手机,生日二 类的设计2.1 User类//User.h#import <Foundatio...原创 2020-04-14 23:34:02 · 281 阅读 · 0 评论 -
OC开发之——@property其他参数设置(41)
一 概述上一课介绍了使用@property (retain)替代OC对象的set方法管理内存,本文再介绍@property其他相关的知识点:set方法内存管理相关参数是否要生成set方法多线程管理setter和getter方法的名称二 代码示例2.1 Person类//Person.h#import <Foundation/Foundation.h>@inte...原创 2020-04-13 23:12:14 · 289 阅读 · 0 评论 -
OC开发之——@property内存管理(40)
一 概述上一篇内存管理set方法避免内存泄漏到的步骤:- (void)setCar:(Car *)car{ if(car!=_car) { [_car release]; _car=[car retain]; }}本文使用@property (retain)来简化set方法的书写二 一般内存管理代码2.1 Book类/...原创 2020-04-13 23:11:01 · 211 阅读 · 0 评论 -
OC开发之——内存管理set方法2(39)
一 概述上篇文章简单介绍了内存管理set的基本方法,可是依然有不太完善的地方,如给一个类成员通过set方法设置另一个类成员时及多次设置时,如何避免内存泄漏呢?二 代码实例2.1 类实例(Car)//Car.h#import <Foundation/Foundation.h>@interface Car : NSObject{ int _speed;}-(vo...原创 2020-04-12 21:37:30 · 210 阅读 · 0 评论 -
OC开发之——内存管理set方法(38)
一 概述如果你有个OC对象类型的成员变量,就必须管理这个成员变量的内存比如:类Person有个Book *_book成员变量这个就是本文将要介绍的set方法内存管理二 代码实例2.1 Book类//Book.h#import <Foundation/Foundation.h>@interface Book : NSObject{ int _price;...原创 2020-04-11 23:20:24 · 182 阅读 · 0 评论 -
OC开发之——内存管理计数器的相关操作(37)
一 什么是内存管理移动设备的内存极其有限,每个app所能占用的内存是有限制的当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要使用的内存空间,比如回收一些不需要使用的对象、变量等空间管理:任何继承了NSObject的对象,对其他基本数据类型(int、char、float、double、struct、enum等)无效理论基础2.1 二 对象的基本结构每个OC对...原创 2020-04-11 23:19:48 · 359 阅读 · 0 评论 -
OC开发之——xcode新版本如何设置ARC(36)
一 概述在刚刚开始学习OC开发时,最好不要开启ARC(Automatic Reference Counting),这样有助于学习内存管理,但是对于刚刚接触xcode的朋友可能会发现,当你使用最新版本的xcode时,敲入release,retain,retainCount时,没有了代码提示,且运行时会报错。这是因为系统默认使用了自动内存管理,下面介绍如何设置这个ARC(Automatic Refe...原创 2020-04-11 23:19:10 · 764 阅读 · 0 评论 -
OC开发之——SEL(35)
一 概述每个类的方法都存储在类对象中每个方法都有一个与之对象的SEL类型的对象根据一个SEL对象就可以找到方法的地址,进而调用该方法SEL类型的定义`typedef struct objc_selector *SEL;二 代码实例2.1 示例类(Person)//Person.h#import <Foundation/Foundation.h>@interface...原创 2020-04-11 09:32:49 · 178 阅读 · 0 评论 -
OC开发之——description方法(34)
一 概述OC执行NSLog输出日志信息时,会调用description方法description方法分为+description和-description方法+description是类方法,-description是对象方法二 description方法演示2.1 使用到的类(Person)//Person.h#import <Foundation/Foundation...原创 2020-04-10 23:59:48 · 182 阅读 · 0 评论 -
OC开发之——类的本质(33)
一 概述类也是一个对象,是Class类型的对象,简称“类对象”Class类型的定义 typedef struct objc_clas *Class类名就代表着类对象,每个类只有一个类对象二 类间关系2.1 Person类//Person.h#import <Foundation/Foundation.h>@interface Person : NSObject@...原创 2020-04-10 23:59:12 · 136 阅读 · 0 评论 -
OC开发之——分类应用(32)
一 概述给NSString增加一个类方法:计算某个字符串中阿拉伯数字的个数给NSString增加一个对象方法:计算当前字符串中阿拉伯数字的根数二 应用代码2.1 NSString+Number.h#import <Foundation/Foundation.h>@interface NSString (Number)+(int)numberCountOfString...原创 2020-04-09 23:09:30 · 183 阅读 · 0 评论 -
OC开发之——分类的基本应用(31)
一 概述OC中的分类:可以给某一个类扩充一些方法,而不修改原来的代码;OC中分类不可以添加字段OC分类跟类有共同的方法时,会优先使用OC分类中的方法多个OC分类包含相同的方法,编译时,会调用后面的分类中的方法二 将要分类的类(Person)//Person.h#import <Foundation/Foundation.h>@interface Person : ...原创 2020-04-09 23:08:52 · 216 阅读 · 0 评论 -
OC开发之——xcode模版修改(30)
一 概述项目模板就是创建工程的时候选择的某一个条目, Xcode会根据选择的条目生成固定格式的项目本文以xcode的Command Line Tool项目为例,介绍如何修改xcode模版二 Xcode模版修改2.1 main.m模版修改应用程序中,找到Xcode, 右键"显示包内容"打开“/Applications/Xcode.app/Contents/Developer...原创 2020-04-09 23:08:03 · 336 阅读 · 0 评论 -
OC开发之——自定义构造方法(29)
一 概述通过系统默认的构造方法初始化后的类,变量的值都一样(未初始化为0,初始化后为固定值)通过自定义构造方法,初始化时设置变量值,这样构造后的类变量的值就不一样二 init初始化过程2.1 示意图2.2 说明继承关系:NSObject是父类,Person继承NSObject,Student继承Studentinit初始化时,Stuent的init会调用Person的ini...原创 2020-04-09 23:06:25 · 266 阅读 · 0 评论 -
OC开发之——重写init方法(28)
一 概述我们之前的代码,在进行类的初始化时,调用[类 new]方法,会创建出一个完整的对象OC中创建出一个完整的可用对象,会经历一下两个方法:调用+alloc分配存储空间(+alloc),返回类对象调用对象-init进行初始化(-init)但是,使用这种方式([类 new]),成员的默认值都是0,所以需要重写二 创建对象的方式2.1 要创建的类名//Person.h文件...原创 2020-04-08 23:22:56 · 558 阅读 · 0 评论 -
OC开发之——id(27)
一 概述万能指针,能指向任何OC对象,相当于NSObject*id类型的定义typedef struct objc_object{ Class isa;}*id;二 id使用示例2.1 Person类的定义和声明//Person.h文件#import <Foundation/Foundation.h>@interface Person : NSObj...原创 2020-04-08 23:22:18 · 244 阅读 · 0 评论 -
OC开发之——@property和@synthesize(26)
一 概述@property 可以在类.h文件中自动生成某个成员变量的setter和getter的声明@synthesize 可以在类.m文件中自动生成某个成员变量的setter和getter的实现@property 和@synthesize是xcode为了简化类的书写,而出现的新特性二 作用演示2.1 Person.h头文件定义(@property)#import <Fou...原创 2020-04-07 20:57:25 · 269 阅读 · 1 评论 -
OC开发之——成员变量的作用域(25)
一 概述局部变量,全局变量都有自己的作用域,成员变量也不例外,成员变量有一下四种类型@private:只能在当前类的实现@implementation中直接访问@protected:可以在当前类以及子类的实现@implementation中直接访问@public:任何地方都可以直接访问@package:同一个“体系内(框架)"可以访问,介于@private和@public之间二 ...原创 2020-04-07 20:56:26 · 270 阅读 · 0 评论 -
OC开发之——点语法(24)
一 概述本节课主要介绍OC中的点语法Java中的.点语法是访问成员变量OC中的.点语法是方法调用二 点语法本质说明2.1 示例类//声明(Person.h)@interface Person : NSObject{ int _age; NSString * _name;}-(void)setAge:(int)age;-(int)age;-(void)s...原创 2020-04-07 20:55:20 · 306 阅读 · 0 评论 -
OC开发之——xcode常用功能(23)
一 概述上一篇介绍了使用xcode开发object-c,本文继续介绍xcode的一些常用功能,如:界面布局及快速调整OC代码调试添加pragma mark标记代码编写提示二 OC界面布局及快速调整使用xcode打开项目后的布局如下图1.左侧按钮:hide or show the navigator(显示或隐藏导航条——控制左侧部分)2.中间按钮:hide or show...原创 2020-04-05 23:27:53 · 642 阅读 · 0 评论 -
OC开发之——xcode新建项目(22)
一 概述之前OC项目使用的都是命令行方式创建和编译,链接,运行项目本文介绍使用IDE工具 xcode,创建项目,新建类文件及运行项目二 xcode创建项目依次点击:Xcode——>File——>New——>Project,打开项目创建窗口在项目创建窗口,选择macOS标签下的Command Line Tool在项目创建时的选项上选择或填入相应的内...原创 2020-04-05 08:39:05 · 2449 阅读 · 0 评论 -
OC开发之——NSString(21)
一 概述C语言中的字符串类型是char,OC中的字符串leasing是NSString,且字符串的标识符是"@"开头,后面紧跟着双引号,双引号中是要显示的字符串的内容二 NSString代码实例#include <Foundation/Foundation.h>int main(){ NSString *str=@"hello"; char *str2="...原创 2020-04-04 21:09:16 · 239 阅读 · 0 评论