Object-c

Object-C学习笔记(三)

那年仲夏 提交于 2019-12-14 19:42:48
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 住院好几天了。昨天刚安上无线网卡,写了半天笔记结果破输入法死机白忙活了,还得重搞。 NSArray 是Cocoa的一个类,用于存放对象,这个类不可以直接存放C中数据类型的数据,需要转换成Object-C的对象才可以。 创建一个NSArray对象的方法有很多,这里先说一个比较简单的方法。 + (NSArray) arrayWithObjects:(id) obj, ... count 用于获取NSArray中的对象个数 -(unsigned int) count; objectAtIndex 用于根据索引获取相应的对象,注意如果访问了不存在的索引,不会像PHP一样最多出现个Notice,将会导致程序崩溃,其实这是个好事,因为他会让你及时的修正,避免由于使用非法索引而导致出现难以调试的Bug。 - (id) objectAtIndex:(unsigned int)index; componentsJoinedByString 这个跟PHP中的implode类似,用于根据一个字符串来将数组连接成一个新的字符串。 - (NSString *) componentsJoinedByString:(NSString *)dec; componentsSeparatedByString 这个跟PHP中的explode类似

Object-c的基础概念(一)

荒凉一梦 提交于 2019-12-13 13:39:38
下文为阅读笔记。 一:Object-c的类基本定义 1. 类定义在@interface和@end之间。 2.MyClass:NSObject的方式定义子类和父类。 3.{}中定义类的对象成员 4.-/+定义的是方法,-定义的是对象的方法,+定义的是类的方法。对象是类的一个实例。对于对象的方法,也即是,当使用该方法之前必须先生成该类的一个特定对象。 二:强类型和弱类型的引用 Object-C的对象可以使用强类型引用和弱类型引用 MyClass *myObject1; // Strong typing id myObject2; // Weak typing MyClass * myObject1是一种强类型的定义方法,该定义方法与C++类似。 id myObject2是一种弱类型的定义方法,弱类型的对象主要用于集合类,集合类的对象通常在运行时才知道集合中内部的对象类型定义。弱类型的引用的使用与Object-C的动态类型绑定(Dynamic Typing)息息相关,在Object-C中,每一个对象包含一个成员变量isa,保存着对象属于哪一个类的类型信息。于是,开发人员能够在运行时刻知道对象的定义,例如,其父类是什么,实现了什么函数等。 三:函数定义和调用 Object-C的函数定义和调用都比较特别,为了让对象执行某个操作,需要向对象发送消息,因此,函数的调用被称作Object

03

丶灬走出姿态 提交于 2019-12-10 14:02:52
##1、基本原理 ###1.1、 什么是内存管理 移动设备的内存极其有限,每个app所能占用的内存是有限制的 当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间。比如回收一些不需要使用的对象、变量等 管理范围:任何继承了NSObject的对象,对其他基本数据类型(int、char、float、double、struct、enum等)无效 ###1.2、引用计数器 概念 每个OC对象都有自己的引用计数器,是一个整数,表示“对象被引用的次数”,即有多少人正在使用这个OC对象 每个OC对象内部专门有4个字节的存储空间来存储引用计数器 计步器的作用 当使用 alloc 、 new 或者 copy 创建一个新对象时,新对象的引用计数器默认就是1 当一个对象的引用计数器值为0时,对象占用的内存就会被系统回收。换句话说,如果对象的计数器不为0,那么在整个程序运行过程,它占用的内存就不可能被回收,除非整个程序已经退出 计步器操作 给对象发送一条retain消息,可以使引用计数器值+1(retain方法返回对象本身) 给对象发送一条release消息,可以使引用计数器值-1 可以给对象发送retainCount消息获得当前的引用计数器值 ###1.3 、对象的销毁 当一个对象的引用计数器值为0时,那么它将被销毁,其占用的内存被系统回收 当一个对象被销毁时

细谈xcode集成开发环境----我的笔记

只谈情不闲聊 提交于 2019-12-09 21:51:39
第一次接触苹果手机是在我的同学家里,他用的iPhone 5,不过现在苹果手机已经升级iPhone 6啦。 他说,苹果手机就是不一样,就是任性。 Mac操作系统 聊天用aim,类似于国内QQ,图片设计用iPhoto,类似于国内Photoshop,web设计用iweb,类似于国内的Dreamweaver。还有苹果商店,苹果音乐itunes。。。。。。 苹果,apple的理念就是不一样,也许Steve jobs是就是受上帝启发开发MAC,据说英国科学家牛顿通过苹果落地发现万有引力定律,接着便发现牛顿第一,第二定律。。。。。。他的灵感也来自于上帝。 其中苹果系统与Windows系统最大的不同,就是集成开发环境。 苹果系统用xcode,而国内用visual studio,微软集成开发环境。我一直使用 visual studio编程。接触xcode集成开发环境,也许是同学的要求,他以前学过Android手机开发,与c#项目开发,现在改学苹果编程。他说做苹果程序员,工资待遇高,高于学Android,PHP语言。 初探xcode Xcode是苹果公司向开发人员提供的 集成开发环境 (非开源),用于开发Mac OS X、iOS的应用程序。 其前身是继承自NeXT的Project Builder,运行于苹果公司的 Mac操作系统 下。Xcode 2.0 是开发人员建立OS X 应用程序的最 快捷方式

02

偶尔善良 提交于 2019-12-09 16:52:50
## 1. 面向对象基本术语 面向对象 Object Oriented,简称OO 面向对象编程 Object Oriented Programming,简称OOP ## 2. 类和对象 2.1、类的声明 类名\属性的命名规则:有意义、驼峰标识、首字母大写(类)\小写(属性) 关键字: @interface 、 @end 代码编写 @interface Car : NSObject{ @public int wheels; // 属性: 多少个轮子 int speed; // 属性: 时速 } - (void)run;// 方法,跑 @end 1. 成员变量 - @interface 的大括号{}中声明的变量:wheels、speed - @interface 的大括号和函数的大括号是不一样的 - 默认会初始化为0 2. @public @public 可以让Car对象的wheels和speed属性被外界访问 3. NSObject 加上:NSObject的目的是让Car类具备创建对象的能力 ### 2.2、类的实现 关键字: @implementation 、 @end // 类的实现 @implementation Car - (void) run { NSLog(@"%i个轮子,%i时速的车子跑起来了", wheels, speed); } @end 没有 @interface

Object-C学习笔记(二 )

穿精又带淫゛_ 提交于 2019-12-07 17:53:56
今天了解了下Object-C中的一些数据结构类型,和操作方式。 Object-C 封装了一些常用的Struct,例如:NSRange、NSSize、NSPoint、NSRect 等便于大家的使用,之所以把他们定义成Struct而没有封装成类,是因为,Object-C的对象都是动态分配内存的,如果封装成类的话面临的是更加频繁的内存分配操作,这将会消耗大量的时间,所以将其丰准工程基本的结构体,这样可以大大的节省系统开销。 NSRange 用来表示某些事务的范围 typedef struct _NSRange{ unsigned int location; unsigned int length; } NSRange 有三种方式去使用这个结构 第一种 起始位置为 10 长度为 4 NSRange range; range.location = 10; range.length = 4 第二种 NSRange range = {10, 4}; 第三种 NSRange range = NSMakeRange(10, 4); NSPoint 用于表示笛卡尔平面中的一个点,可以理解为一个坐标(x, y) typedef struct _NSPoint{ float x; float y; } NSPoint; NSSize 用于存储长度和宽度 typedef struct _NSSize{

object-c http-get-post

霸气de小男生 提交于 2019-12-05 09:18:32
get请求 //得到session对象 NSURLSession *session = [NSURLSession sharedSession]; NSURL *url = [NSURL URLWithString:@"http://localhost:80/video"]; //创建一个任务 NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { NSLog(@"----%d", data.length); }]; //开始任务 [task resume]; post请求 //创建session对象 NSURLSession *session = [NSURLSession sharedSession]; NSURL *url = [NSURL URLWithString:@"http://localhost:80/login"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; //设置request request.HTTPMethod = @"post";

Object-C 多线程中锁的使用-NSLock

送分小仙女□ 提交于 2019-12-05 03:38:53
在多线程的编程环境中,锁的使用必不可少! 于是,今天来总结一下为共享资源加锁的操作方法。 一、使用 synchronized 方式 // 线程 1 dispatch_async ( dispatch_get_global_queue ( DISPATCH_QUEUE_PRIORITY_DEFAULT , 0 ), ^{ @synchronized ( _myLockObj ){ [obj1 method1 ]; sleep ( 30 ); } @synchronized (obj1){ } }); // 线程 2 dispatch_async ( dispatch_get_global_queue ( DISPATCH_QUEUE_PRIORITY_DEFAULT , 0 ), ^{ sleep ( 1 ); @synchronized ( _myLockObj ){ [obj1 method2 ]; } }); } 这样,就会起到锁的作用,线程2会等待线程1执行完成 @synchronized (obj){ }块后,在执行。从而起到锁的作用。 2.使用 NSLock 方式 先贴一个例子: 1. TestObj.h @interface TestObj : NSObject - ( void )method1; - ( void )method2; @end 2. TestObj

Object-C(自学1)

蹲街弑〆低调 提交于 2019-12-04 23:28:47
----- 需求索要 自学了下 OBJECt-C ----- 就基础部分一些 和操作 command + R 运行 command +B 只编译.m文件 NSlog() = printf NSLog 是自动换行的 #import <Foundation/Foudation.h> <> 引用的是我们系统的库,找到就有 #import "Person.h" //""引用的是我们自己的类 .h文件只负责声明 不实现 .m文件实现声明的方法 在Main // 类名 *变量的名字 = [[类名 alloc]init] Person *per = [[Person alloc]init]; [Per eat]; -(void)eat; //对象方法命名规则 1.以-号开头 2.所有的数据类型放在()里面,而且只有数据类型放在()里面。 3.方法名准驼峰原则。 带参数的方法命名规则 1.对象命名前3条准守 2.一个参数带着:号,冒号写在参数类型前面 3方法名想写个句子: -(void)eatApp:(int)num; Person *per = [Person new]; [per run]; [per eatApp:5]; set get 方法 -(void)setAge:(int)age{ _age = age; } //**set方法 1.以-号开头 2.不需要返回值 3.set开头

iOS开发中的内存管理机制浅谈

北城以北 提交于 2019-12-03 08:46:13
iOS开发中的有关内存管理 一、前引 随着移动设备的内存越来越大,程序员也已经度过了为了那一两M的内存在系统的抽丝剥茧的年代,对于JAVA的开发者,对内存更是伸手即取,并且从不关心什么时候还回去。但是,程序的掌控度对程序员来说是至关重要的,任何语言的内存管理机制的初衷也是在有限的空间里完成最精致的逻辑。 二、 Xcode工程设置ARC ARC是xcode5中引入的自动引用计数,其原理与MRC是一样,只是系统帮助我们添加了retain和release。现在在xcode中新建的项目默认都是ARC的环境,我们可以通过设置其为MRC。 在BuildSettings中搜索ARC: 将下面的参数设置为NO,默认是YES。 这时项目工程的环境就变成了MRC。 三、项目中实现MRC和ARC混编 现实中的许多旧的项目,还有一些比较老的第三方库,可能都是采用MRC环境编写的,我们在对其进行扩展或者做新项目的兼容的时候,可以在xcode中对其进行混编。 选择:target->build phases->compile sources 如果工程是ARC,要混编MRC的文件,我们选中compiler flags,后面设置为-fno-objc-arc 如果工程是MRC,要混编ARC文件,我们在后面设置-fobjc-arc 四、IOS内存管理机制基本原理 无论你是只注重于代码逻辑,将内存交给ARC的新时代程序员