添加同一个控件屡次到父控件,最终只会添加一个该控件html
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -ios
TableView中设置backgroundView,设置ImageView出不来?c++
由于target为7,设置图片只有8才能够git
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -程序员
1.url编码github
ios中http请求遇到汉字的时候,须要转化成UTF-8,用到的方法是:swift
NSString * encodingString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];缓存
2.url解码安全
请求后,返回的数据,如何显示的是这样的格式:%3A%2F%2F,此时须要咱们进行UTF-8解码,用到的方法是:服务器
NSString *str = [model.album_name stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
dataSourceArray和reloadData都要在主线程中完成
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*** Assertion failure in -[UITableView _dequeueReusableViewOfType:withIdentifier:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3512.30.14/UITableView.m:6532
解决:由于使用的tableViewCell的xib绑定了identifier,若是注册时候不跟xib保持一致就会报错,或者是代码哪里写错了,仔细检查代码。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
后面带有UI_APPEARANE_SELECTOR的方法,均可以经过appearance统一设置
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IQKeyboardManager
键盘在切换textfield的时候出现顺序有误,跟添加textfield控件顺序有关,调整顺序便可解决
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
获取子View所在控制器
- (UIViewController *)viewController
{
for (UIView* next = [self superview]; next; next = next.superview) {
UIResponder *nextResponder = [next nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]]) {
return (UIViewController *)nextResponder;
}
}
return nil;
}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
This file is set to build for a version older than the project deployment target. Functionality may be limited.
解决方法:
选中xib 的文件,在 Builds for 中修改 Project Deployment Target
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
library not found for . . .
解决:.a文件未上传到服务器
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
libc++abi.dylib: terminate_handler unexpectedly threw an exception
2016.01.23
遇到了这个状况,发现是由于我从xib里拖出来的属性,被我改了名字致使
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
App installation failed
This application's application-identifier entitlement does not match that of the installed application. These values must match for an upgrade to be allowed.
解决:
iPhone上已经装了包标识符同样的 App,删掉再运行。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
开发注意:
若是你建了一个类,好比:NCQRCodeViewController
那么你就不能在建立NCQRCodeView(包含xib)这样的类,不然会崩溃,缘由是由于NCQRCodeViewController会先去找NCQRCodeView.xib,纳尼!就错在这儿了。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ios9后打开百度、高德地图须要如下配置
在info.plist添加白名单
<key>LSApplicationQueriesSchemes</key>
<array>
<string>baidumap</string>
<string>iosamap</string>
</array>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
设置状态栏样式
1 修改info.plist文件,让UIApplication设置样式
添加 View controller-based status bar appearance 并设置为 NO
2 设置样式
在appdelegate中application.statusBarStyle = UIStatusBarStyleLightContent;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Provisioning profile is expiring warning
~/Library/MobileDevice/Provisioning Profiles/
删除掉全部的profile在从新下载
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
directory not found for option '-L
解决方法:
修改路径:选择项目名称----->Targets----->Build Settings----->Search Paths----->Library Search Paths
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
==15481==ERROR: AddressSanitizer: heap-buffer-overflow
edit scheme…->Run->Diagnostics->取消 Enable Address Sanitizer
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Scale:拉伸图片
Aspect:图片长宽的比例,保持图形的长宽比,保持图片不变形。
Aspect Fill:在保持长宽比的前提下,缩放图片,使图片充满容器。
Aspect Fit:在保持长宽比的前提下,缩放图片,使得图片在容器内完整显示出来。
Scale to Fill: 缩放图片,使图片充满容器。图片未必保持长宽比例协调,有可能会拉伸至变形。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
桌面图标通知
// 注册推送, 用于iOS8以及iOS8以后的系统
if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert) categories:nil];
[application registerUserNotificationSettings:settings];
}
application.applicationIconBadgeNumber = 1;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The identity used to sign the executable is no longer valid.
步骤:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
设备的provis文件地址
/Users/mashangyouqian/Library/MobileDevice/Provisioning Profiles
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
This application is modifying the autolayout engine from a background thread, which can lead to engine corruption and weird crashes. This will cause an exception in a future release
把须要更新UI的放在的主线程就行了
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The identity used to sign the executable is no longer valid
删掉~/Library/MobileDevice/Provisioning Profiles/ 下全部文件, 在从新下载
下载:Xcode->Preference...->AppleID->ViewDetails->DownloadAll
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-(void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
// 开启系统返回手势
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
}
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
// 禁用系统返回手势
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#pragma mark - tap和didSelect冲突解决
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
// 若是返回NO,则gesture recognizer会忽略此触摸事件
return NO;
}
return YES;
}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CUICatalog: Invalid asset name supplied: (null)
缘由imageNamed为空
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
iOS项目工程,添加一个c文件,编译报错
解决方案:
将#import用包裹起来
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
svn 提交 is out of date
update
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
给 App 瘦身的另外一个手段是提交 Bitcode 给 Apple,而不是最终的二进制。Bitcode 是 LLVM 的中间码,在编译器更新时,Apple 能够用你以前提交的 Bitcode 进行优化,这样你就没必要在编译器更新后再次提交你的 app,也能享受到编译器改进所带来的好处。Bitcode 支持在新项目中是默认开启的,没有特别理由的话,你也不须要将它特地关掉。
视频 app 的画中画模式相对简单一些,若是你使用 AVPlayerLayer 来播放视频的话,那什么都不用作就已经支持了。但若是你以前选择的方案是 MPMoviePlayerViewController 的话,你可能也须要尽早迁移到 AVKit 的框架下来,由于 Media Player 将在 iOS 9 被标记为 deprecated 并再也不继续维护。
滑动覆盖和分割视图的 app 会使用 iOS 8 引入的 Size Class 中的 Compact Width 和 Regular Height 的设定,配合上 AutoLayout 来进行布局。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
通知只在主线程发送。
在init中注册,在dealloc中注销。
ghthouse是一个很好的错误追踪工具。OmniOutliner,我在这上面能够找到一堆事情去作。
若是你崩溃了,最好使用僵尸Zombies工具。
真实的代码质量远比别人怎么看我更重要。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The operation couldn’t be completed
退出Xcode重启
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
VVDocumenter-Xcode失效问题解决(若是这么弄都不行, 就删掉重来就OK)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
在info.plist中添加
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
iOS - is missing from working copy
解决方案:
1.打开终端
2.cd 到警告所提示的文件夹下
3.执行命令svn rm --force 丢失文件的名称
4.回车
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
批量更新Xcode插件
find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3 | xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add `defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID`
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
懒加载的好处
一、直接使用便可,不用关心他怎么建立
二、保证他不空
三、业务逻辑清晰
UIPopoverController 详见02-UIPopoverController.pptx
layoutSubviews,若是不是根据本身的尺寸来算子控件的尺寸,那么该方法就没有做用
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presenting view controllers on detached view controllers is discouraged <MyChargerViewController: 0x7fa84a4d4840>.
解决:
AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
[delegate.window.rootViewController presentViewController:self.loginNav animated:YES completion:nil];
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Unbalanced calls to begin/end appearance transitions for <TabBarController: 0x7fa84a515d00>.
解决:
进行视图跳转时,可能会遇到上面的警告日志,好比在loadView、viewDidLoad、viewWillAppear中,使用下面的代码:
AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
[delegate.window.rootViewController presentViewController:self.loginNav animated:YES completion:nil];
解决办法:
在viewDidAppear中执行上述代码便可;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
在使用MJRefresh时返回可能会崩溃, 缘由是在返回时须要在dealloc里执行[self.header free];[self.footer free]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
找的时候能够经过在app运行时打印[NSBundle mainBundle]路径和NSHomeDirectory()发现具体路径。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
对scrollView进行autolayout布局很差搞,使用tableviewcell替代较好
在cell的contentView里使用autolayout布局,最后一个布局不能使用尺寸布局
label的autolayout布局只须要设定位置和宽度就能够,高度系统帮咱们算,也就意味着不用在使用bounding去计算高度了
插件路径:~/Library/Application Support/Developer/Shared/Xcode/Plug-ins
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
若是是其余格式转为mp3格式,该文件不能播放
wav:kAudioFormatLinearPCM
aac:kAudioFormatMPEG4AAC
caf:kAudioFormatLinearPCM、kAudioFormatAppleIMA四、kAudioFormatMPEG4AAC
m4a:kAudioFormatAppleLossless
本身录制的aac能够播放,安卓发的aac播放不了
本身录制的wac能够转成amr,可是不能播,转回wav能播,可是安卓发的amr转不了wav
安卓发送的amr、aac文件不能加载
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
若是tableview没有控制器,cell不要显示在状态栏下面:self.tableView.contentInset = UIEdgeInsetsMake(20.0f, 0.0f, 0.0f, 0.0f);
Tableview底部不要显示没有内容的cell:self.tableView.tableFooterView = [[UIView alloc] init];
得到导航栏高度?控制器不要渗透在导航栏下面:self.edgesForExtendedLayout=UIRectEdgeNone;
打开Mac隐藏文件命令:defaults write com.apple.finder AppleShowAllFiles -bool true
关闭Mac隐藏文件命令:defaults write com.apple.finder AppleShowAllFiles -bool false
功能代码 在code4app找 或 在下载次数里找完整项目
完整项目 在github找
导航栏改不了 使用kvc:[self setValue:[[CusNavigationBar alloc] init] forkeyPath:@“navigationBar”];
adjustsImageWhenHighlighted//设置高亮的时候不要让图标变色
若是设置了select图片,在高亮状态下不会显示,这时覆盖setHighlight
Default-568@2x.png若是没有放在LaunchImage是不会自动加载的
Reflector 设备投影软件
/*
http://www.cocoachina.com/ios/20150130/11076.html
当旧的 iPhone 5 程序运行在 iPhone 6 上面,假如没有通过适配,旧程序自动等比放大,铺满新手机,旧程序也能够正常运行。这种方案可算是自动适配。但由于旧程序拉伸了,总体看起来有点虚,也不能更好利用大屏空间。
当须要开发者手动适配的时候,跟 iPhone 4 过渡到 iPhone 5 同样,在新程序中,指定一张新的启动图片。当指定了启动图,屏幕分辨率就已经变成应有的大小,这时候利用 AutoLayout 进行布局,同一份代码,就能够支持多个机型。新手机的屏幕更大,有更多的虚拟点,能够显示更多的内容。
值得注意一点是,iPhone 6 Plus。它的宽高是 414 × 736 个点,3x 模式,理想上来讲,应该有 1242 × 2208 像素。但 iPhone 6 Plus 的实际像素是 1080 × 1920,是比理想值要少一点的。iPhone 6 Plus 的处理方式是将程序总体稍微缩小一点。分辨率很高,这点区别,实际上也看不出来。
*/
远程推送流程
推送是基于苹果的APNs服务器的,是由于若是用户把app关了,咱们公司的服务器会与咱们的app失去沟通,而苹果的APNs服务器始终与咱们的设备保持长链接,那这样咱们就只有借助苹果的APNs服务器完成推送
1.首先要得到设备的deviceToken
2.而后把deviceToken发给公司的服务器
3.由服务器,把deviceToken和推送的内容,交给苹果的APNs服务器
4.苹果的APNs服务器根据deviceToken,他就知道由哪个应用推东西给哪个设备
命令行冲突
(p)手动解决
(e)撤销更新操做,回去修改代码,至关于什么也没作
(mc)个人覆盖掉服务器的
(tc)服务器覆盖掉个人
(df)查看冲突
冲突解决方案:
1.df查看冲突,
2.p手动解决(会产生3个文件供查看,服务器前一个版本,服务器最新的版本,个人版本),解决冲突
3.resolved 文件,告诉服务器解决了冲突
回退
revert 只能对没有提交到服务器的代码恢复
解决回退已经提交的代码:
更新上一个版本,把刚提交的代码文件拷出来,在次更新到最新版本,把拷出来的代码在拷进去,在提交更新
dispatch_once是线程安全的
200 OK
400 客户端语法错误,服务器没法解析
404 路径错误
500 服务器错误
charles下载地址:http://www.charlesproxy.com/download/
tmp : 不会备份,系统随时会被删除
Documents :会备份到iTunes
Library :preferences 会备份到iTunes
Library :caches 不会备份,不会被系统删除
多线程文件下载思路:
1首先建立一个等大小的空文件
2开多条线程分别去下载某一块,使用NSFileHandle插入
http支持断点下载,不支持断点上传
tcp/ip基于断点上传,基于socket
同步/异步决定了是否开启新的线程,同步在主线程执行任务,异步在子线程执行任务(特例:若是是主队列不会开启子线程)。异步是具有开线程的能力
串行/并发决定了执行任务的方式,串行是一个一个的执行任务,并发是同时执行任务。
凡是函数名带有create/copy/new/retain等字眼,都须要在不须要的时候进行release,若是在arc环境下release时报错,就不用写了。
主队列无论用同步仍是异步都不会开线程
不能使用同步执行主队列任务,会致使任务没法往下执行
1.iPhone5分辨率320x568,像素640x1136,@2x
2.iPhone6分辨率375x667,像素750x1334,@2x
3.iPhone6 Plus分辨率414x736,像素1242x2208,@3x,(注意,在这个分辨率下渲染后,图像等比下降pixel分辨率至1080p(1080x1920)
Debug:调试版本,程序员用,会启动更多的服务来监控错误,速度比较慢
Release:发布版本,用户用,去掉那些繁琐的监控服务,运行速度快,节省内存
发布版本以前,在运行右边的项目名称->editScheme->run->info->Build Configuration 改成release测试一遍。静态库最好用release版本
内存分析工具
静态分析:不用运行程序分析
动态分析运行程序时分析
swift学习博客:www.cnblogs.com/yangfaxian/p/3765081.html
工具:
1crashlytics崩溃报告
唐巧http://www.devtang.com/blog/2013/07/24/use-crashlytics/
2.github
3.simpholders快速打开应用沙盒
4.stackoverflow
音乐后台运行
1.appDelegate.m
- (void)applicationDidEnterBackground:(UIApplication *)application
{
// 开启后台任务,让程序保持运行状态
[application beginBackgroundTaskWithExpirationHandler:nil];
}
2.Info.plist
Required background modes ->item = App plays audio or streams audio/video using AirPlay
3. 设置音频会话类型
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategorySoloAmbient error:nil];
[session setActive:YES error:nil];
联合主键
id name
1 jack
1 jim
这样是能够的
select * from t_food f, t_food_type t where f.food_type_id = t.id and t.name = ‘鲁菜’;
select * from t_food f where f.food_type_id = (select t.id from t_food_type where t.name = ‘鲁菜’);
binary是二进制数据
MJExension 中 模型转字典的keyvalues若是属性是nil,就不转了
1.用户业务—> UserTool
2.加载用户我的信息—> userInfoWithParam:success:failure:
3.封装请求参数—> UserInfoParam
4.封装请求结果—> UserInfoResult
基本数据类型比对象性能高
请求参数用对象
返回用基本数据类型
添加异常断点,就是在哪里崩掉了就在哪里打个断点,点击左侧倒数第二个图标,点+选“add exception breakpoint”
按钮的title只要改动,该按钮的宽度就须要调整。重写setTitle方法,计算宽度。
-568h只支持Default-568h@2x.png
unassigned:不可用
设置cell的frame:重写setFrame方法,[super setFrame:frame]以前设置cell的frame
设置imageView的高亮图片:imageView.highlightedImage
微博时间处理:
1.今天
1分钟之内:刚刚
一个小时之内&至少1分钟:1分钟前
至少一个小时前:1小时前
2.昨天:昨天 12:00
3.前天或更早:05-09 12:00
4.非本年:2014-05-09 12:00
AirServer:真机投影
SDWebImage:假如在cell上显示图片,本身开线程去下载图片,会有很是很是多的细节要处理,为了减去这些没必要要的麻烦,异步下载这个图片,咱们一般用一个框架叫 SDWebImage。
SDWebImage好处:1本地缓存,减省用户流量,2异步下载,3避免图片显示错误
AFNetworking:网络服务框架
KVC:会将字典全部key-value赋值给模型对应的属性
git管理已经建立好的项目
1.打开终端切换到项目:cd 项目路径
2.使用git进行初始化:git init
3.把项目代码加到git里:git add .
4.提交代码到git里:git commit -m '初始化’
注释: -m表明所有 '’表明注释
返回一个不须要系统自动渲染的图片,也就是使用原始图片
[image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
imageView的图片是放在次层上显示的
ping 127.0.0.1 检测本地网卡是否正常
ping 192.168.1.105 检测网线是否正常
设置状态栏样式
1 修改info.plist文件,让UIApplication设置样式
添加 View controller-based status bar appearance 并设置为 NO
2 设置样式
在appdelegate中application.statusBarStyle = UIStatusBarStyleLightContent;
启动图片决定了窗口的大小
iOS7 有retain3.5 4.0英寸
iOS6 有retain3.5 4.0英寸 非retain3.5英寸
若是不用storyboard 【tableview dequeu… forIndexPath:] forIndexPath:就不用写了
事件的完整处理过程
1.先讲事件对象由上往下传递(由父控件传递给子控件),找到最合适的控件来处理这个事件。
2.调用最合适控件的touches方法。
3.若是调用了[super touches...]就会将事件顺着响应者链条往上传递,传递给上一个响应者
4.接着就会调用上一个响应者的touches方法
上一个响应者:
1.若是当前这个view是控制器view,那么控制器就是当前这个view的上一个响应者
2.若是当前这个view不是控制器view,那么当前这个view的父控件就是上一个响应者
什么是响应者链条
响应者链条是由多个响应者对象链接起来的链条
什么是响应者:能处理事件的对象
利用响应者链条,能让多个控件处理同一个触摸事件
怎么利用链条往上传递?上一个响应者
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ios中remove references和move to trash的区别?remove references 只是删除引用 工程文件夹里面仍是有这个文件的 move to trash 把文件从工程文件夹里扔进垃圾箱里了 .
快速修改本文件中全部的属性名技巧: 选中属性名后右击选中refactor -> rename
IOS中属性名不能以new开头
Xcode 中 iOS SDK 和 iOS Deployment Target 的设置: Base SDK 指的是,当前编译所用的SDK 版本; OS Deployment Target 指的是,编译后的 app 可在 终端的哪一个 版本上运行。
写delegate的时候类型应该为weak弱引用,以免循环引用,当delegate对象不存在后,咱们写的delegate也就没有存在乎义了天然是须要销毁的。@property (weak, nonatomic) id<MXCustomTabBarDelegate> delegate;
用XCode的Analyze能够分析到哪里有内存泄露。分析内存泄露不能把全部的内存泄露查出来,有的内存泄露是在运行时,用户操做时才产生的。那就须要用到Instruments了。