iOS
文章平均质量分 59
Crazy灬Coding
醒醒,你的Bug还没修完呢
展开
-
关于Objective-C方法签名规则的说明
虽然入行iOS开发已多年,但是方法签名这个东西,除了逆向的时候看到过,平时还真没怎么接触过。最近公司项目转成cocos项目,需要修改cocos引擎代码,其中与Native的方法交互用到了方法签名。官方文档看了下说明的很详细了,下面是结合个人理解对方法签名规则的一些总结。如有错误欢迎大家指出。此文禁止转载!!!/** OC 方法签名规则:(v|@)a@0:8(@ | ^v | @? | ^i)b(@ | ^v | @? | ^i)c以此类推 其中v标识void @标识基本类型和...原创 2020-07-30 16:25:04 · 1171 阅读 · 0 评论 -
版本号大小判断,适用规则(X.X.X.X........)
产品功能需要判断版本大小。查了下网上的写法。不是判断有误就是限定位数,干脆点,自己写。目前我试了下,没发现问题,有问题的话,欢迎指出来。- (NSString *)maxVersionWithVer1:(NSString *)ver1 withVer2:(NSString *)ver2 { NSArray <NSString *>*versionArray1...原创 2019-11-04 11:19:42 · 2311 阅读 · 0 评论 -
使用fir打包,测试跳转安装的坑
这个坑很小,就很难发现。根据fir文档给的方法,一步一步操作,基本没问题。但最后一步itms-services://?action=download-manifest&url=https%3A%2F%2Fdownload.fir.im%2Fapps%2F%3Aid%2Finstall%3Fdownload_token%3Dxxxxxx这步出现问题了,apps/id/insta...原创 2019-10-30 19:22:19 · 3471 阅读 · 0 评论 -
@synchronized(self)的涵义
@synchronized 的作用是创建一个互斥锁,保证此时没有其它线程对self对象进行修改。这个是objective-c的一个锁定令牌,防止self对象在同一时间内被其它线程访问,起到线程的保护作用。 一般在公用变量的时候使用,如单例模式或者操作类的static变量中使用。原创 2014-06-27 09:10:26 · 420 阅读 · 0 评论 -
libxml2.dylb 添加后找不到<libxml/tree.h> 头文件
libxml2.dylb 添加后找不到 头文件,因为已经启用了新的头文件,可以在系统中查看 他们的路径是:include/libxml2/libxml/tree.h 所以找不到,但是添加为libxml2/libxml/tree.h编译tree.h会报编译错误。 解决方法:在XCODE的 Project -> Edit Project Settings -> Buil原创 2014-05-26 16:25:24 · 709 阅读 · 0 评论 -
关于 [[self class] alloc]的理解
采用 [[self class] alloc] 时,如果类派生了子类,产生的将是类型相同的子类对象,而不是基类对象,好的版本采用“id newInstance =[[sefl] init);“,而优秀的版本采用“id newInstance =[[[self class] alloc ] init);”转载 2014-05-26 16:33:59 · 612 阅读 · 0 评论 -
证书问题
http://blog.csdn.net/gandam19/article/details/17605139转载 2014-06-10 15:11:52 · 495 阅读 · 0 评论 -
关于 账号密码等隐私信息的存储-------KeychainItemWrapper和SFHFKeychainUtils
iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储。相对于NSUserDefaults、文件保存等一般方式,keychain保存更为安全,而且keychain里保存的信息不会因App被删除而丢失,所以在重装App后,keychain里的数据还能使用。从ios 3。0开始,跨程序分享keychain变得可行。原创 2014-05-29 15:19:39 · 914 阅读 · 0 评论 -
Xcode5 配置SVN管理
第一步,下载subversionhttp://subversion.apache.org原创 2014-05-28 11:24:28 · 629 阅读 · 0 评论 -
CoreBluetooth的使用问题汇总
1、CoreBluetooth[WARNING] is not powered on原创 2014-08-29 21:16:23 · 944 阅读 · 0 评论 -
使应用可以从iTunes中导入资料(即共享)
1、苹果的共享目录都是在app的Document下的,所以,ru'guo'xi原创 2014-09-19 17:48:30 · 536 阅读 · 0 评论 -
关于DEBUG调试用的宏定义
在开发中我们常常需要对数据进行打印操作,这样我们才能更好的将shu'ju原创 2014-08-27 12:17:57 · 10221 阅读 · 0 评论 -
打印出所有字体
NSArray *familyNames = [UIFont familyNames]; for( NSString *familyName in familyNames ){ NSLog(@"Family: %@",familyName);原创 2014-08-28 16:39:43 · 668 阅读 · 0 评论 -
UIImage用法汇总
当Imageview需要用一张小图铺满整个VIew的时候,原创 2014-09-23 14:34:32 · 472 阅读 · 0 评论 -
Choose a destination with a supported architecture in order to run on this device
通常出现这个问题的原因是以前的老项目在新版本的xcode中打开时会出现为这个问题。郁闷了一段时间, 在网上也没有找到合适的解决方案, 后来发现其实是这个提示过于误导。大部分人看到这个提示,立马会想到可能是architecture设置成不对,但不管怎么去修改,这个错误还是会存在。 其实只要把编译器改成现在的LLVM即可。 修改位置Project->Build Settin原创 2014-09-28 15:19:28 · 370 阅读 · 0 评论 -
NSMutableURLRequest 报错处理
一、在使用Xcode6进行运行项目时,发现程序直接Crash了,控制台信息如下:dyld: Symbol not found: _OBJC_CLASS_$_NSMutableURLRequest Referenced from: /Users/admin/Library/Developer/CoreSimulator/Devices/94A429E8-A959-42F8-B3原创 2014-09-28 19:22:26 · 730 阅读 · 0 评论 -
编译出现错误 "_OBJC_CLASS_$_ClassName", referenced from:
1.一个类所在的库(框架)没有被引入,常见为framework添加。解决方法:添加该类所在的库(框架)2.一个类没有被正确的添加到工程中,这种情况在工程中的确存在这个类,可是程序就是不能识别。解决方法:选中该类,只删除它在该工程中的引用,然后,再添加引用,原创 2014-09-29 10:28:18 · 901 阅读 · 0 评论 -
ios:在XCode下混合编译C++/Objective-C
先说题外话,文章标题其实起的不好,在iOS的开发中,Apple建立的库基本都是用Objective-C写的,所以在这里的C++指的其实是Objective-C++。首先,最最最要紧的事情,不是代码而是编译器选项,在做混合编译之前一定要把编译器的Compile Sources As选项改为Objective C++。默认的选项是According to file type,用这个的话转载 2014-10-08 10:21:51 · 533 阅读 · 0 评论 -
蓝牙功能的实现--用CoreBlue框架
https://developer.apple.com/library/ios/samplecode/BTLE_Transfer/Listings/BTLE_Transfer_BTLECentralViewController_m.html#//apple_ref/doc/uid/DTS40012927-BTLE_Transfer_BTLECentralViewController_m-DontL原创 2014-07-03 09:52:03 · 975 阅读 · 0 评论 -
NSString的几种常用方法
原文地址 http://justcoding.iteye.com/blog/1405951转载 2014-11-14 09:55:10 · 413 阅读 · 0 评论 -
iOS调试出错,问题汇总
1、No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7, VA。。。。。。原创 2014-08-28 16:00:53 · 497 阅读 · 0 评论 -
Objective-C中的instancetype和id区别
有一个相同两个不同。相同Written by Mattt Thompson on Dec 10th, 2012Objective-C is a rapidly evolving language, in a way that you just don't see in established programming languages. ARC, object lite转载 2014-11-26 10:36:22 · 414 阅读 · 0 评论 -
iOS 常用的宏定义
1判断真机和模拟器#if TARGET_IPHONE_SIMULATOR#import "Release-iphonesimulator/BaiduMobStat.h"#elif TARGET_OS_IPHONE#import "Release-iphoneos/BaiduMobStat.h"#endif原创 2014-10-21 17:04:42 · 376 阅读 · 0 评论 -
关于键盘的有关问题汇总
如果想让键盘只能输入数字或者字母等单一值,可以用正则对字符串直接判断,也可以通过以下方法实现判断(内部实现也是正则):NUMBERS是一个自己定义的宏定义,如果智能输入数字则宏定义为:@“0123456789.”NSCharacterSet*cs;cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS] in原创 2014-12-19 17:07:29 · 345 阅读 · 0 评论 -
编译错误问题
1、fatal error: file '/Applications/Xcode5-DP.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIDyn转载 2014-10-14 09:47:02 · 597 阅读 · 0 评论 -
KVC/KVO
KVO一,概述KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。二,使用方法系统框架已经支持KVO,所以程序员在使用的时候非常简单。1. 注册,指定被观察者的属性,2. 实现回调方法3.转载 2015-03-25 16:12:51 · 353 阅读 · 0 评论 -
UIView的layoutSubviews和drawRect方法何时调用
setNeedsDisplay和setNeedsLayout两个方法都是异步的,setNeedsDisplay会自动调用drawRect,而setNeedsLayout会自动调用layoutSubviews。layoutSubviews方便数据计算,drawRect方便视图重绘。假设我们采用的是直接调用drawRect的机制,先考虑这样一个问题 ,,现在有两个UIViewC转载 2015-03-20 09:55:02 · 291 阅读 · 0 评论 -
动画集合
- (void) alertShow:(UIView*)View{ CAKeyframeAnimation* animation = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; animation.duration = 0.5; NSMutableArray *values = [NSMutable原创 2015-03-12 18:10:47 · 302 阅读 · 0 评论 -
获取系统时间
//获得系统时间 NSDate * senddate=[NSDate date]; NSDateFormatter *dateformatter=[[NSDateFormatter alloc] init]; [dateformatter setDateFormat:@"YYYY:MM:dd:HH:mm:ss"]; NSString * locationString原创 2015-04-15 14:22:39 · 370 阅读 · 0 评论 -
关于强制横竖屏的几点说明
在应用中,我们有时需要将单独的一个页面强制横屏,而其他页面还是保持竖屏显示。在强制横屏时,我走了一点弯路,希望可以帮助到和我一样的小白O(∩_∩)O哈哈~ios6+的系统下在强制横屏时,需要在controller中实现下面三个方法。-(BOOL)shouldAutorotate //是否自动旋转{ return NO;}-(NSUInteger)supportedInterf原创 2015-04-16 17:38:11 · 1318 阅读 · 0 评论 -
关于在UITableView上添加PanGesture手势的方法
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{ CGPoint translation = [(UIPanGestureRecognizer *)gestureRecognizer translationInView:gestureRecognizer.view.supervie原创 2015-04-21 15:11:02 · 1595 阅读 · 0 评论 -
UISearchBar去除背景颜色
去除颜色的方法是讲backgroundImage替换成一个自己的Image,我们可以自己通过CG库的方法生成一张无色背景,这样就可以了 UISearchBar * SearchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(self.frame.size.width - 250, 20, 200, 30)]; SearchBar.p原创 2015-04-28 19:47:10 · 1029 阅读 · 0 评论 -
iOS下的路径写法
$(SRCROOT)/.......和$(PROJECT_DIR)/表示相对于工程根目录下的目录原创 2015-07-16 15:50:39 · 901 阅读 · 0 评论 -
block调用self问题
如果在block代码块中调用self视图或视图控制器时,如果不采取措施,block会持有强引用的self,而self也会强引用持有block,这样就会造成循环引用,进而造成内存泄露问题。解决这个问题的方法很简单,就是解除block对self的强引用。__block typeof(self) bself = self; [self methodThatTakesABlock:^ {原创 2015-08-12 19:28:19 · 877 阅读 · 0 评论 -
SVN提交.a文件
http://wpt205.blog.163.com/blog/static/108047495201371272034579/1. 打开终端, 在命令行中输入: vi ~/.subversion/config 来打开配置文件.2. 然后, 在[miscellany]项找到这个串: # global-ignores = *.o *.lo *.la *.al .libs *转载 2015-08-12 17:03:06 · 1134 阅读 · 0 评论 -
NSArray / NSDictionary 转 Json
在iOS开发中,网络数据转换是必不可少的,我们时常会用到NSArray / NSDictionary转化成Json字符串。网上看到很多都是借助于第三方去转化,就个人而言,我认为三方的东西一方面增加了冗余度,另一方面时常更新,比较头疼。仔细看看了苹果自带的json序列化解析器,苹果提供了字典和数组转化Json字符串的方法。 NSDictionary * dict = [[NSDic原创 2015-08-04 17:51:31 · 1208 阅读 · 0 评论 -
iOS 8 新特性介绍
随便去问任何人,他们都会告诉你WWDC2014是近年来最为激动的回忆。 整个大会没有发布任何新硬件,它是一次史无前例的软件开发者盛宴!仅是iOS 8和OS X Yosemite的发布就能让2014成为苹果平台划时代的一年,加上Extension,Continuity,SpriteKit 改进,iOS SceneKit,Metal,HealthKit,Local Authentication转载 2015-08-05 16:06:10 · 720 阅读 · 0 评论 -
Reveal调试UI工具的使用
在Commend命令行中,直接执行 vim ~/.lldbinit命令,将这个文件打开,输入下面语句command alias reveal_load_sim expr (void*)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib",0x2);command alia原创 2015-09-10 14:37:58 · 478 阅读 · 0 评论 -
iOS时间戳与标准时间转换
生成当前时间的时间戳NSString * timestamp = [NSString stringWithFormat:@"%ld",time(NULL)];将时间戳转换成标准时间 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; NSTimeZone* timeZone = [NSTimeZo原创 2015-09-06 11:50:38 · 969 阅读 · 0 评论 -
tableView和gesture手势冲突(响应链问题)
当你在一个View上添加了Tap点击事件,同时你又在这个View上放了一个TableView,那么tableViewcell的点击事件就会失去响应。分析原因:当View上添加了Tap事件之后,Tap在响应链中的位置高于tableViewcell的Select。(tap事件会cancelTouchsInView),所以在View上接收不到来自table的事件,造成失去响应。因此,当我们点击c原创 2015-09-16 10:24:41 · 4666 阅读 · 0 评论