开发过程中或多或少会碰见一些问题和纪要,感觉有必要记下来,避免下次再犯,此文章后续会更新...
-
iOS app通过itunes共享文件
在程序的配置文件中添加Application supports iTunes file sharing
,设置为YES;这里共享的是沙河的Document目录 -
DZNEmptyDataSet使用心得
同mj刷新一起使用的时候,一定要先endrefresh方法,然后再去刷新tableview,因为DZNEmptyDataSet是在reload数据的时候获取tableview的偏移和bounds,然后去设置空视图的位置的,如果先reload,则会导致空视图空视图显示出来的时候往上偏了54像素,54从哪里冒出来的呢?全局搜了一下,发现mj刷新正在pulling的时候正好54。 -
个人认为开发中涉及到系统权限的应该统一放在一起,放在一个文件中。
-
CocoaLumberjack 自定义logger输出样式
- 首先自定义一个类似DDLogFileFormatterDefault的formatter作为格式输出,实例化一个fomatter;
- 自定义一个ddloger,继承于DDAbstractDatabaseLogger,重载db_log、db_save,添加post服务器方法;将第一步创建的formatter赋值给ddloger的formatter属性;
- nslog打印
注意:
DDLog:基础类,必须引入的。
DDASLLogger:支持将调试语句写入到苹果的日志中。一般正对Mac开发。可选。
DDTTYLogger:支持将调试语句写入xCode控制台。我们即使要用它。可选。
DDFileLogger:支持将调试语句写入到文件系统。可选。
DDLog的输出级别默认提供以下若干种:
DDLogError:定义输出错误文本
DDLogWarn:定义输出警告文本
DDLogInfo:定义输出信息文本
DDLogDebug:定义输出调试文本
DDLogVerbose:定义输出详细文本提供的日志级别为:
LOG_LEVEL_ERROR:只显示错误日志。
LOG_LEVEL_WARN:包括:LOG_LEVEL_ERROR
LOG_LEVEL_INFO:包括:LOG_LEVEL_WARN
LOG_LEVEL_DEBUG:包括:LOG_LEVEL_INFO
LOG_LEVEL_VERBOSE:包括:LOG_LEVEL_DEBUG
LOG_LEVEL_OFF:关闭日志
level = LOG_LEVEL_VERBOSE的时候,以上所有的level的打印日志都会进行打印,在appdelegate中添加多少个logger,就会形成几种情况的日志,譬如:文件、数据库、控制台等,添加自定义的之后便会增加一种日志形式(自定义的上传给服务器的日志)
问题:- 日志文件logger只会存入error和warning的日志吗?
- 日志文件只有一个吗?如果不是,什么时候就会创建?
-
category中添加成员变量
.h@property (nonatomic, retain) LBEmptyPageView * emptyView; @property (assign, nonatomic) BOOL showNetError;
static const void * emptyViewKey = &emptyViewKey; @implementation BaseViewController (EmptyDataSet) - (LBEmptyPageView *)emptyView { return objc_getAssociatedObject(self, &emptyViewKey); } - (void)setEmptyView:(LBEmptyPageView *)emptyView { objc_setAssociatedObject(self, emptyViewKey, emptyView, OBJC_ASSOCIATION_RETAIN_NONATOMIC); } - (BOOL)showNetError{ return [objc_getAssociatedObject(self, _cmd) boolValue]; } - (void)setShowNetError: (BOOL)showNetError{ objc_setAssociatedObject(self, @selector(showNetError), @(showNetError), OBJC_ASSOCIATION_ASSIGN); }
category使用原则:
- category的实现可以依赖主类,但主类一定不依赖category,也就是移除一个category的代码不会对主类产生影响
- category可以直接食用主类已有的私有成员变量,但不应该为实现catecory而在主类中添加成员变量,考虑通过上述的方式实现。
-
在用xib自定义tableview的头部时候,有时会出现当我NSbundle实例化之后改变它的frame不管用,这个可能xcode的bug或者是缓存问题,删掉重新搞
-
之前碰到一个问题就是缺少库的问题,第一次显示缺AFNetWorking,我将AFNetWorking从cocoapods中删除手动添加之后,它又会报其它库的错误,一般这种问题就是因为路径的问题,这里奉上解决方法:library search path 设置:$(inherited)
-
iOS7报错信息:Library not loaded: /System/Library/Frameworks/Photos.framework/Photos
Referenced from: /var/mobile/Applications/E19A46C1-C0EC-4DC3-A9CE-DC84811DD7E8/xxxx.app
Reason: image not found
解决方案:You need to weak link Photos.framework, not ALAssetsLibrary! Xcode -> Targets -> YourTargetName -> Build Phases -> Link Binary With Libraries -> Set Photos.framework to Optional. -
图片裁剪:可以实现美食杰启动页图片上下分开动画效果
CGImageCreateWithImageInRect(image.CGImage, CGRectMake(0, image.size.height *0.5, image.size.width, image.size.height *0.5))
-
播放GIF比较好的库:FlipBoard出品的FLAnimatedImage
-
time profilter部分专词意思
Separate by Thread:按线程分开做分析,这样更容易揪出那些吃资源的问题线程。特别是对于主线程,它要处理和渲染所有的接口数据,一旦受到阻塞,程序必然卡顿或停止响应。
Invert Call Tree:反向输出调用树。把调用层级最深的方法显示在最上面,更容易找到最耗时的操作。
Hide Missing Symbols:隐藏缺失符号。如果 dSYM 文件或其他系统架构缺失,列表中会出现很多奇怪的十六进制的数值,用此选项把这些干扰元素屏蔽掉,让列表回归清爽。
Hide System Libraries:隐藏系统库文件。过滤掉各种系统调用,只显示自己的代码调用。
Flattern Recursion:拼合递归。将同一递归函数产生的多条堆栈(因为递归函数会调用自己)合并为一条。
Top Functions:找到最耗时的函数或方法。 -
NSSortDescriptor
通过它可以实现数组内模型根据某一个字段或者多个进行排序,示例代码如下:
//按年龄和名字排序,如果碰到年龄相等的,则根据名字排序
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"_age" ascending:NO];
NSSortDescriptor *sortDescriptorName = [[NSSortDescriptor alloc] initWithKey:@"_name" ascending:NO];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, sortDescriptorName, nil];
[_mutArrVideo sortUsingDescriptors:sortDescriptors];
```
-
获取数字数组中的最大项和最小项
NSArray * arr = [NSArray arrayWithObjects:@"10",@"50",@"9", nil];
NSInteger max = [[arr valueForKeyPath:@"@max.intValue"] integerValue];
```
-
非主线程执行UI操作检测工具
PSPDFUIKitMainThreadGuard.m -
奇怪矩阵
控制台打印:<Error>: CGAffineTransformInvert: singular matrix. May 11 16:19:48 LBAssistant[4704] <Error>: CGAffineTransformInvert: singular matrix. May 11 16:19:48 LBAssistant[4704] <Error>: CGAffineTransformInvert: singular matrix.
并且相机黑屏,但是拍到的照片是存在的,只是黑屏,
bug猜测原因是:UIActionsheet的问题,更换自定义的就没事儿了,但心里还是觉得此问题不简单,另有他因,还待高人指点。 -
cell计算高度卡顿
xib布局的自定义cell第一次计算高度卡顿2s,其原因是:布局中lable使用了第三方字体(黑体),非系统字体 -
brew update 出错:Error: /usr/local must be writable! 解决方案:
sudo chgrp -R admin /usr/local sudo chmod -R g+w /usr/local
-
关于写入权限的问题
sudo chown demoker /Library/Caches/Homebrew
demoker 是你当前用户名,后面的是你受权限限制的文件目录
-
关于injectionforXcode 使用时碰到的问题
- 真机运行
解决方法:在main.m或者.pch中添加👇代码:#ifdef DEBUG static char _inMainFilePath[] = __FILE__; static const char *_inIPAddresses[] = {"192.168.83.47", "127.0.0.1", 0}; //👆两个声明可加可不加 #define INJECTION_ENABLED #import "/tmp/injectionforxcode/BundleInjection.h" #endif
- Could not codesign as 'iPhone Developer':/Users/...
issue图片中写得很清楚了证书到底是图中两个证书里面的哪一个,解 决方法就是修改iOSInjectionProject/x86_64/identity.txt 文件中证书为正 确的那一个即可,这样就可以使用这个插件了😄。[参考] (https://github.com/johnno1962/injectionforxcode/issues/41) - 真机运行
-
synx 同步iOS工程目录
Xcode下面直接创建Group时在本地项目文件夹中并不会形成实体文 件夹,通过synx可以将Group目录同步。使用:- 安装
sudo gem install synx
- 使用
synx your path
- 安装
CocoaPods管理的库要重新pod install一次,手动添加的Framework也要重新添加。
-
Realm pod install 失败
[!] /bin/bash -c
set -e
sh build.sh cocoapods-setup
core is not a symlink. Deleting...
Downloading dependency: core 1.0.1
Downloading core failed:
curl: (56) SSLRead() return error -36
```
解决方法:
```rm -rf Pods```,删除工程目录下的pods文件夹,然后重新 pod install,安装Realm的时候会慢一些,等了很长时间...解决方 法 参考链接[🔗](https://github.com/realm/realm-cocoa/ issues/2713)
```
curl https://static.realm.io/downloads/core/realm-core-1.0.1.tar.bz2 -O
mkdir $TMPDIR/core_bin
mv realm-core-1.0.1.tar.bz2 $TMPDIR/core_bin
22. 子类是可以调用父类xib文件进行实例化的,例如LBWebViewController
23. sublime 插件安装方法:[链接](https://packagecontrol.io/installation#st3)
1.
```ctrl+ `
```,打开console,执行
```simple
```中的命令,即可
2. 安装完
```package control.sublime-package
```,就可以安装其他插件了
3.
```shift+command+p
``` 找到
```install package
```命令,回车,然后输入需要安装的插件名称,再回车就可以了
24. realm pod 报错'object_schema.hpp' file not found
```
1. rm -rf Pods
2. rm -rf ~/Library/Caches/CocoaPods
```
Done.
网友评论