objective-c
飞天舞桐
目前在腾讯PCG做iOS开发工作,曾供职于网易、携程等。
展开
-
Objective-C----new
使用new创建对象时,系统其实在后台执行了两个步骤: 第一步:为对象分配内存,即对象获得一个用来存放实例变量的内存块; 第二部:自动调用 init 方法,使对象进入可用状态。注:alloc 的内部实现用的是 new。@implementation Car- (id) init{ if (self = [super init]) { engine = [Engine new原创 2015-06-18 15:24:08 · 610 阅读 · 0 评论 -
Objective-C----NSDictionary、NSMutableDictionary
知识点:定义:字典(dictionary)是关键字及其定义的集合。上代码:/* * NSDictionary 不可变字典 * */ // 1、创建字典对象的常用方法 //在床架你字典对象时需要赋值键值对,但是顺序为:值,键(值在前,键在后的形式)。 NSDictionary *dic1 = [原创 2015-06-20 09:38:56 · 1278 阅读 · 1 评论 -
Objective-C----NSString 、 NSMutableString
直接上代码://// main.m//// Created by on 15/4/2.// Copyright (c) 2015年 . All rights reserved.//#import <Foundation/Foundation.h>#import "Tire.h"int main(int argc, const char * argv[]) { //NSSt原创 2015-06-20 09:42:29 · 779 阅读 · 0 评论 -
Objective-C----NSDate、NSDateFormatter
直接上代码: /* * NSDate * */ //NSDate类创建的对象永远都是零时区(格林尼治标准时间)的时间对象,通过+date便利构造器创建的时间对象表示了当前时间 //GMT 格林尼治标准时间 NSDate *newDate = [NSDate date] ; NSLog原创 2015-06-20 10:06:31 · 700 阅读 · 2 评论 -
cocoapods错误整理
xcode升级导致cocoapods很多奇葩问题1.pod setup执行后半年没反应解决办法设置淘宝的镜像gemsources−−removehttps://rubygems.org///等有反应之后再敲入以下命令 gem sources --remove https://rubygems.org///等有反应之后再敲入以下命令 gem sources -a http://ruby.taobao.转载 2015-06-23 22:00:38 · 521 阅读 · 0 评论 -
因copy和mutableCopy与 强制类型转换,使用不当而产生的异常
导致出现错误的代码:先说一下执行了那些代码才出现这样的错误的:定义了这样一个 NSString 的对象:NSString *resultString = nil;然后 用 resultString 调用了一个方法:[(NSMutableString *)resultString insertComma];需要说明的是,insertComma 这个方法,是一个 NSMutableString 类的扩原创 2015-05-02 21:15:46 · 927 阅读 · 0 评论 -
Objective-C----打印 %
NSLog ( “打印 100%%” );控制台会输出:打印100%%% 转移字符 %原创 2015-07-05 21:32:45 · 1176 阅读 · 0 评论 -
NSError 之 code 对照表
NSError code错误列表信息(NSFileManage、NSURL…)分类: 移动开发-iphone、ipad2010-11-02 23:31 10704人阅读 评论(0) 收藏 举报 osconstantsasynchronousfileservervalidation 目录(?)[+]官网地址:http://developer.apple.com/library/mac/#docum转载 2015-07-14 09:53:54 · 1539 阅读 · 1 评论 -
删除cell时,出现崩溃的情况的原因
一、删除cell时,出现崩溃的情况的原因:在 UITableView 中,做删除操作时,我们会使用一下这个方法:[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]withRowAnimation:UITableViewRowAnimationAutomatic];其中,[NSArray arrayWithObj原创 2015-11-11 11:22:40 · 3822 阅读 · 0 评论 -
判断字符串是否包含某些字符
一、判断字符串是否包含某一个字符NSString *str1 = @"abcd";NSString *str = @"a";//在str1这个字符串中搜索\n,判断有没有if ([str1 rangeOfString:str].location != NSNotFound) { NSLog(@"这个字符串中有a"); }二、判断字符串中是否包含数字#pragma mark原创 2015-11-30 18:05:58 · 12791 阅读 · 1 评论 -
控制台输出 NaN
一、提出问题:今天在调试一个bug时,发现当我在控制台里打印一个 CGFloat 类型的变量后,会输出 NaN 样的字符。二、解决问题 :仔细研究后发现,原来是我获取的 UIImage 对象 等于 nil 了,以至于 image.size.height 值 和 image.size.width 的值,都拿不到了; 那么image的宽高比 计算出来的 imageView 的 imageHeight原创 2016-03-22 19:34:34 · 5285 阅读 · 0 评论 -
Objective-C----NSArray、NSMutableArray
讲解:NSArray 类有两个限制。首先,它只能存储 Objective-C 的对象,而不能存储原始的 C 语言基础数据类型,如 int 、float、 enum、struct 和 NSArray 中的随机指针。同时,你也不能在 NSArray 中存储 nil (对象的零值或 NULL 值)。有很多种方法可以避开这些限制。 可以通过类方法 arrayWithObjects: 创建一个新的 NSAr原创 2015-06-20 09:33:57 · 936 阅读 · 0 评论 -
Objective-C----Block 、数组排序
直接上代码://写⼀一个 返回值为整型 参数为NSString(仅⼀一个参// 数)的block,实现将字符串转换为整型的功能。// int (NSString *string) {// return [string intValue] ;// }// 把^int (NSString *string)赋值给int (^myBlock)(NSString *)原创 2015-06-20 09:49:35 · 1128 阅读 · 0 评论 -
Objective-C----快速枚举、数组排序
直接上代码: /* * 快速枚举 * */ NSLog( @"++++++++++++++++++" ) ; NSArray *testArray = @[@1, @2, @3, @4, @5] ; //通过快速枚举来遍历数组元素 for (NSArray *objec原创 2015-06-20 09:46:45 · 1451 阅读 · 0 评论 -
Objective-C----实例变量
一、实例变量的可见度(访问权限)二、方法OC中的⽅方法分两种:类⽅方法和实例⽅方法。类⽅方法:只能类使⽤用,例如:+(id)alloc 注:类⽅方法中不能使⽤用 实例变量实例⽅方法:只能对象使⽤用,例如: -(void)sayHi 三、直接贴代码//// main.m// OC_Practice_02//// Created by on 15/3/31.// Copyright原创 2015-06-18 15:19:23 · 710 阅读 · 0 评论 -
Objective-C----防御式编程
优点:防御式编程能够在开发早期发现错误。例代码:下面是相关存取方法的实现代码。- (void)setTire:(Tire *)tire atIndex:(int)index { if (index < 0 || index > 3) { NSLog (@"bad index (%d) in setTire:atIndex:", index); exit (1);原创 2015-06-19 11:05:48 · 718 阅读 · 0 评论 -
Objective-C----初识Objective-C
初识Objective-CObjective-C刚诞生的时候,扩展名.m代表message,它指的是Objective-C的一个主要特性。NSLog( @“ %d ” , 12 ); // 可以输出 12printf ( “ %d\n ” , 23 ); // 可以输出23NSLog( @“ %s “ , “abc” ) ; // 可以输出 字符串 abcprintf ( “%s”原创 2015-06-19 11:39:00 · 608 阅读 · 0 评论 -
Objective-C----@class 和 #import
@class 和 #import说明: @class 创建了一个前向引用。这是在告诉编译器:“相信我。以后你自然会知道这个类到底是什么,但是现在,你知道这些足矣。” 如果有循环依赖关系,@class 也很有用。即 A 类使用 B 类, B 类也使用 A 类。如果试图通过 #import 语句让这两个类互相引用,那么就会出现编译错误。但是如果在 A.h 文件中使用 @class B,在 B.h 中原创 2015-06-19 11:51:27 · 711 阅读 · 0 评论 -
Objective-C----setter 和 getter
命名规范:对于存取方法的命名,Cocoa有自己的惯例。在为自己的类编写存取方法时,应当遵守这些惯例,这样你和其他人读代码时才不会感到困惑。 setter 方法根据它所更改的属性的名称来命名,并加上前缀set。下面是几个setter方法的名称:setEngine:、setStringValue:、setFont:、setFillColor:和setTextLineHeight:。 getter 方原创 2015-06-19 10:44:18 · 1572 阅读 · 0 评论 -
Objective-C----NSLog( )
概念NSLog()可以使用 %@ 格式说明符来输出对象。NSLog()处理%@说明符时,会询问参数列表中相应的对象以得到这个对象的描述。从技术上来讲,也就是NSLog()给这个对象发送了description消息,然后对象的description方法生成一个NSString并将其返回。NSLog()就会在输出结果中包含这个字符串。在类中提供description方法就可以自定义NSLog()会如何输原创 2015-06-19 10:22:24 · 698 阅读 · 0 评论 -
Objective-C----init
init在 init 方法中,下面这行代码看起来有些奇怪。if (self = [super init])下面我们来解释这行代码的意思。为了让超类(在这里是NSObject)将所有需要的初始化工作一次性完成,你需要调用 [super init]。init 方法返回值(id类型数据,即泛型对象指针)就是被初始化的对象。 将 [super init] 返回的结果赋给 self 是 Objective原创 2015-06-18 15:30:22 · 696 阅读 · 0 评论 -
Objective-C----内存管理
规则:当你使用 new 、 alloc 或 copy 方法创建一个对象时,改对象的保留计数器的值为 1。当不再使用该对象时,你应该向该对象发送一条 release 或 autorelease 消息。这样,该对象将在其使用寿命结束时被销毁。当你通过其他方法获得一个对象时,假设该对象的保留计数器的值为 1 ,而且已经被设置为自动释放,难么你不需要执行任何操作来确保该对象得到清理。如果你打算在一段时间原创 2015-06-20 10:29:38 · 987 阅读 · 0 评论 -
Objective-C----NSSet 、 NSMutableSet 、 NSCountedSet
直接上代码:/* * NSSet 不可变 集合 * */ // 两种初始化方式 NSSet *set1 = [[NSSet alloc] initWithObjects:@"1", @"2", @"3", nil] ; NSLog( @"%@", set1 ) ; NSSet *s原创 2015-06-20 09:44:47 · 1309 阅读 · 0 评论 -
Objective-C----继承
一、概念:面向对象提供了继承语法,能大大简化代码。把公共的方法和实例变量写在父类里,子类字需要写自己独有的实例变量和方法即可。继承既能保证类的完整,又能简化代码。二、继承的特点:OC 中只允许单继承。 没有父类的类成为根类,OC中的根类是NSObject(祖宗)。 继承的内容:所有实例变量和方法。 如果子类不满意父类方法的实现,可以重写(overwrite)父类的方法。三、方法调度机制:当代码原创 2015-06-19 15:17:52 · 707 阅读 · 0 评论 -
Objective-C----autorelease pool
autorelease pool 使用注意事项:在 ARC 下,不能使用 [ [ NSAutoreleasePool alloc ] init ] ,而应当使用 @autoreleasepool ;不要把大量循环操作放到同一个 NSAutoreleasePool 之间,这样会造成内存峰值的上升 ;尽量避免对大内存使用该方法,对于这种延迟释放机制,还是尽量少用 ;sdk 中一般利用静态方法创建原创 2015-06-20 09:58:21 · 944 阅读 · 0 评论 -
Objective-C----多态
优点:父类指针可以指向不同的子类对象 ;允许在多个类中定义同一个消息接口 ;、可以屏蔽不同子类对象之间的差异,写出通用代码 ;适应需求的不断变化 。原创 2015-06-20 10:01:02 · 1227 阅读 · 0 评论 -
NSString 与 Unicode
当你在处理文本时,如果你不是在写一些非常古老的代码(legacy code),那么你一定要使用 Unicode。幸运的是,苹果和 NeXT 一直致力于推动 Unicode 标准的建立,而 NeXT 在 1994 年推出的 Foundation Kit 则是所有编程语言中最先基于 Unicode 的标准库之一。但是,即使 NSString 完全支持 Unicode,还替你干了大部分的重活儿,处理各种语转载 2017-03-28 11:32:50 · 1714 阅读 · 0 评论