iOS - object c
文章平均质量分 64
编织人生_程就未来
拼自己想要的,挣自己没有的。-弓无名
展开
-
iOS代理、block传值
主线程与子线程经常需要进行数据的传递,不同的类之间,不同的控制器之间都需要。而且经常需要监听一个动作的完成,而后才去做相应事件。(代理是一对一的关系)。一、代理传值代理是一种设计模式。iOS中用的非常多。可以通过自定义代理来进行传值。参见我的这篇文章 http://blog.csdn.net/xn4545945/article/details/31036转载 2015-12-25 15:22:52 · 461 阅读 · 0 评论 -
C++对象到Objective-C的参数传递
通常来说将C++对象做为参数传递给Objective-C的方法中是比较方便的。举例来说,比如我们有一个NSString的初始化方法,我们希望传递一个std::string做为参数传进去。只要你传递了对象的指针,事情就完成了,不过你还可以在参数中使用“被指向”的形式,下面用例子来说明。比如这样一个方法:+ (NSString*)stringWithCx转载 2016-01-09 01:04:22 · 1796 阅读 · 0 评论 -
iOS performSelector: withObject: 详细教程
Objective-C中调用函数的方法是“消息传递”,这个和普通的函数调用的区别是,你可以随时对一个对象传递任何消息,而不需要在编译的时候声明这些方法。所以Objective-C可以在runtime的时候传递人和消息。 首先介绍两个方法 SEL和@selector根据AppleObjective-C Runtime Reference官方文档这个传递消息的函数就是 id转载 2016-01-09 16:48:54 · 1941 阅读 · 0 评论 -
setneedsdisplay setneeddisplayinrect的区别
大家应该都比较清楚如果想要刷新一个UIView的话,调用它的setNeedsDisplay即可。问题是,当你调用了一个UIView的setNeedsDisplay之后,该UIView何时才得到刷新?经过调研发现,应该是在一个runloop的最后阶段刷新。什么是一个runloop呢?个人认为可以简单的理解为了一个事件的处理过程。例如用户点击屏幕是两个runloop。转载 2016-01-09 16:55:08 · 505 阅读 · 0 评论 -
iOS声明变量在@interface括号中与使用@property的区别
刚开始接触OC再看别人写的代码的时候,常常困惑于人家在声明属性时的写法,总结出来有三中方式,不知道哪一种比较规范化,现在我把三种方式贴出来,然后再一一探讨每个方式声明属性的区别。方式一:直接在@interface中的大括号中声明。@interface MyTest : NSObject{ NSString *mystr;}方式二:在转载 2016-01-10 15:08:16 · 671 阅读 · 0 评论 -
iOS中使用GCD的dispatch_once创建单例
iOS4.0以后+ (instantClass *)sharedClient {static instantClass *_sharedClient = nil;static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{_sharedClient = [[instantClass alloc]原创 2016-01-10 15:24:50 · 654 阅读 · 0 评论 -
iOS 创建单例的两种方法
创建一个单例很多办法。我先列举一个苹果官方文档中的写法。 [cpp] view plaincopystatic AccountManager *DefaultManager = nil; + (AccountManager *)defaultManager { if (!DefaultManager) DefaultManager =转载 2016-04-18 11:04:51 · 434 阅读 · 0 评论 -
iOS Runtime(消息机制)
最近在找工作,Objective-C中的Runtime是经常被问到的一个问题,几乎是面试大公司必问的一个问题。当然还有一些其他问题也几乎必问,例 如:RunLoop,Block,内存管理等。其他的问题如果有机会我会在其他文章中介绍。本篇文章主要介绍RunTime。RunTime简称运行时。就是系统在运行的时候的一些机制,其中最主要的是消息机制。对于C语言,函数的调用在编译的时候会决定调用哪转载 2017-03-23 11:40:09 · 661 阅读 · 0 评论 -
iOS中nil和release 的区别
nil和release的作用:1、nil就是把一个对象的指针置为空,只是切断了指针与内存中对象的联系;所以nil并没有释放内存2、release才是真正通知内存释放这个对象。所以只有release才回真正释放内存。二者使用的先后顺序:如果没有release就直接nil,那么虽然不会出错,却等于自己制造内存泄漏了,因为nil之后release就已经不起作用了。转载 2015-12-23 14:52:08 · 721 阅读 · 0 评论 -
ARC下内存泄露问题
转自:https://www.zybuluo.com/MicroCai/note/67734 http://www.aichengxu.com/view/30206ARC下内存泄露问题2014-07-15 10:10 本站整理 浏览(2339)ARC下内存泄露问题,有需要的朋友可以参考下。iOS提供了ARC功能,很大程度上简化了内存转载 2017-03-23 15:53:30 · 655 阅读 · 1 评论 -
iOS中nil与release的区别与用法
做IOS开发的估计都对Objective-C的内存管理机制很头疼,一不小心程序就会出内存泄露,我也不例外,前几天被指针的置nil与release给搞惨了,今和大家详细解说一下有关Objective-C中nil与release的区别与用法。 首先说一下他们两的作用,nil就是把一个对象的指针置为空,只是切断了指针与内存中对象的联系,它对内存的释放没有什么作用;而release才是真正用转载 2016-01-06 18:13:23 · 747 阅读 · 0 评论 -
iOS开发之NSRunLoop概述
iPhone应用开发中关于NSRunLoop的概述是本文要介绍的内容,NSRunLoop是一种更加高明的消息处理模式,他就高明在对消息处理过程进行了更好的抽象和封装,这样才能是的你不用处理一些很琐碎很低层次的具体消息的处理,在NSRunLoop中每一个消息就被打包在input source或者是timer source中了,来看详细内容。1.什么是NSRunLoop我们会经常看转载 2016-01-05 18:32:35 · 396 阅读 · 0 评论 -
iOS#pragma mark的用法
(A) #pragma mark是Objective -C语言的一部份吗?答:不是。它纯粹是Xcode的工具,对程式一点影响都没有。若不想深入了解,直接跳过即可。(B) #pragma mark的功用是什麼?答:pragma这字在字典上查不到,近似字pragmatic的意义是活跃的、爱管閒事的、实用主义的。pragma mark实质上是让Xcode在其Function Menu内打转载 2016-01-04 16:51:46 · 587 阅读 · 0 评论 -
iOS中viewDidLoad, viewWillDisappear, viewWillAppear等加载顺序
viewDidLoad, viewWillDisappear, viewWillAppear等加载顺序 当一个视图控制器被创建,并在屏幕上显示的时候。代码的执行顺序 1、 alloc 创建对象,分配空间 2、init (in转载 2015-12-24 16:50:46 · 7728 阅读 · 0 评论 -
iOS在ARC下保留dealloc的原因
dealloc 方法中 我们不再被允许调用 [release] 了, 也不允许调用 [super dealloc]。 唯一一个留着 dealloc 方法的原因就是, 你需要释放一些不在 ARC 控制下的资源。 例如 Core Foundation 对象中调用 CFRelease(), 对那些通过 malloc() 分配的内存调用 free(), 注销通知,停止 Tiner, 等等。如果你是转载 2015-12-24 16:40:18 · 442 阅读 · 0 评论 -
iOS中NSCoding协议
由于Sqlite数据库的blob数据和NSData的兼容比较好,我想尝试把一个NSArray存入Sqlite。Sqlite不支持数组的直接存储,所以我寻找了一些数组转化为NSData的方法。网上大多数的解决办法都是针对于字符数组,eg: NSArray*array01= [[NSArrayalloc]initWithObjects:@"1",@"2",@"3",nil];这种数组的解决转载 2015-12-24 15:04:12 · 1247 阅读 · 0 评论 -
Objective-C非正式协议与正式协议
作者:wangzz原文地址:http://blog.csdn.net/wzzvictory/article/details/9295317转载请注明出处如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号wangzzstrive来支持我,谢谢!这两个概念困扰我很久了,一直都很像搞清楚到非正式协议和正式协议有什么区别和联系,下面结合网上的资料和自己的看法转载 2015-12-24 11:31:02 · 346 阅读 · 0 评论 -
iOS判断字符串是否包含空格
NSString *_string = [NSString stringWithFormat:@"123 456"];NSRange _range = [_string rangeOfString:@" "];if (_range.location != NSNotFound) { //有空格}else { //没有空格}原创 2015-12-23 15:07:07 · 2790 阅读 · 0 评论 -
iOS在AppDelegate类中获取其他类中属性的值
//在AppDelegate类中定义一个接收传值的属性,例如:需要接收的属性为NSMutableArray类型。 @property (nonatomic, strong) NSMutableArray *youarenameData; //在其他类中定义一个AppDelegate的属性: @property (nonatomic, strong) A原创 2015-12-24 17:53:43 · 827 阅读 · 0 评论 -
iOS中KVC与KVO的区别
一、KVC与KVO*“KVC”:key value Coding(键值编码)*目的:间接的修改或获取对象的属性,降低程序(类与类)之间的耦合度.*“KVO”:key value Observer(键值观察),观察者模式.(检测模型变化用的多)*目的:通常用于观察某个对象的某个属性发生变化时,及时做出相应.二、KVC的使用方式转载 2015-12-23 15:33:49 · 1760 阅读 · 0 评论 -
iOS输出控制符
// %@ 对象 字符串// %d, %i 整数// %u 无符整形// %f 浮点/双字// %x, %X 二进制整数// %o 八进制整数// %zu size_t// %p 指针// %e 浮点/双字(科学计算)// %g 浮点/双字// %s原创 2016-01-04 16:11:55 · 405 阅读 · 0 评论 -
iOS#import与@class的区别
#import与@class的区别 // 1.import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你。// // 2.在头文件中,一般只需要知道被引用的类的名称就可以了。 不需要知道其内部的实体变量和方法,所以在头文件中一般使用原创 2016-01-04 16:44:47 · 369 阅读 · 0 评论 -
iOS 多线程 锁 互斥 同步
在iOS中有几种方法来解决多线程访问同一个内存地址的互斥同步问题:方法一,@synchronized(id anObject),(最简单的方法)会自动对参数对象加锁,保证临界区内的代码线程安全[cpp] view plain copy print?@synchronized(self) { /转载 2017-03-23 16:22:01 · 604 阅读 · 0 评论