你的位置:首页 > 操作系统

[操作系统]有关开发经验的几个问题


 

---------------------------------我是帅气的标题栏【结尾有彩蛋,彩蛋】-----------------------------------------------------

         首先是UI方面,关于应用中的国际化问题: 设置中英文的切换。这一块基本上就是创建一个新的文件类型1、File-> New-> flie->Resource->Strings File,新建一个Strings File类型的文件,有一个需要注意的地方,就是这个文件的命名必须是Localizable,因为Xcode寻找国际化的内容就是根据Localizable文件来查找的,2、点击创建的文件并在Xcode右侧的控制面板中点击Localize..按钮,启用国际化 3、在PROJECT中Info选项卡下面对应的Loacalization添加相应的语言即可。4、添加完语言后,在Localizable会出现对应的语言文件,这样就直接在文件中编写软件里涉及到的字符就可以了。 例如 :“OK” = "确定"; [说明一点,结尾的分号不要忘记]  5、以上就是配置方面的,下面就是使用了: 使用里面的字符,只需要使用NSLocalizedString(..,..)就可以了,例如:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"WARING", nil) message:NSLocalizedString(@"NetworkConnectError", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"CANCEL", nil) otherButtonTitles:NSLocalizedString(@"OK", nil), nil];[alert show];

 

  这样,应用的国际化就配置完成了。

 

--------------------------------------我是华丽的分割线 ------------------------------------------------------------------

       关于程序的调试 : 一般采用“断点调试”很普遍,采用NSLog的打印输出也不在少少数,毕竟这个更方便一些。但是程序中涉及到大量的输出语句,使得应用存在一种潜在的风险,所以我们可以采用这种打印方式,更好的控制调试的方法最大化的减少调试对程序的影响。

1.#ifdef DEBUG2.#define DMLog(...) NSLog(@"%s %@", __PRETTY_FUNCTION__, [NSString stringWithFormat:__VA_ARGS__])3.#else4.#define DMLog(...) do { } while (0)

这样如果你使用DMLog,那么它只能在debug build期间打印。__PRETTY_FUNCTION__ 也可以帮忙打印出log所在的函数的名称。

 

-------------------------------------------------还是我,我还是华丽的分割线----------------------------------------------------

       

      一般应用托管到蒲公英打包上传时选择的是Save for Enterprise Deployment的打包方式,然后导出[Export],切记,上传蒲公英的应用不能采用直接把包拖进iTunes里面然后再拖出来获得ipa包,通俗的说这时候的包是用来上线 Apple Store而不是用来测试的,蒲公英是一个测试平台,对上传的这个包是安装不了的。

 

 

-------------------------------------------------低调秀气的分割线----------------------------------------------------------

        在OC中懒加载是使用广泛的,而在Swift2.0 中要使用关键字进行声明,直接上代码吧:

  lazy var applicationDocumentsDirectory: NSURL = {    // The directory the application uses to store the Core Data store file. This code uses a directory named "lalala.ServiceShop" in the application's documents Application Support directory.    let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)    return urls[urls.count-1]  }()

         在切换视图的主界面

        let app = UIApplication.sharedApplication().delegate as! AppDelegate        app.createTabBarView()

 

----------------------------------------------------

      下拉菜单实现原理

     设置一个tableView ,底部可以是一个透明的view,上面加上一个imageview,背景图片可以设置成那种带尖角的,ps处理;然后加上一个tableview,同样设置透明,tablecell可以自定义。

     
       关于3DTouch【针对的是图标的点击和界面的跳转】
     
       主要是涉及到界面的跳转,我主要是采用通知的方式进行的界面跳转,在程序的根视图【父类】,里面注册通知,在相应的界面里面进行界面的切换和调用即可【注意点: 界面切换时候注意延迟的使用,因为有时候界面还未创建就进行跳转是达不到目标的效果的】
 
 
      关于网络请求的https的问题,从Xcode7开始默认使用的是https所以在info.plist文件中配置一下即可:
<key>NSAppTransportSecurity</key>  <dict>    <key>NSAllowsArbitraryLoads</key>    <true/>  </dict>

 


-------------------我又来啦-------------------------------
 

        关于出现的一个很**的错误提示

        “Certificate identity 'iPhone Developer: xxxx ho (2J123456HA)' appears more than once in the keychain. The codesign tool requires there only be one.”

 

         这时候你的你的内心是拒绝的,已经到了最后一步了就出现了这个问题,相死的心估计都有了,但是慢慢来,分析一下就能知道

         其实这个的原因是keychain access中存在过期的'iPhone Distribution: xxxx',但没有显示在钥匙链/登录中,而是在钥匙链/系统中,并且是隐藏的,因此需要在钥匙链->显示->显示过期证书,然后把钥匙链下的登录和系统的过期证书都删掉。

          而且我在搜寻答案的时候,看到一篇帖子,有可能删除过期证书失败,但是在keychain里面却显示删除成功,这个问题的解决方法是重启keychain,删除,重复这个过程直到真正删除成功。

          有时候在keychain里面找不到已过期、多余的证书,但我们在xcode的target的building setting的code signing里面却能够看到多余的证书,这个就证明我们的keychain并没有清楚干净。

          总结,解决这个问题的步骤是:1.清掉keychain里面多余的证书。2.刷新xcode里面的provisioning profile。

-----------------------我是彩蛋?【oh, NO】-------------------------
 

           关于应用崩溃后如何看崩溃的信息,一般我们会收到一些崩溃的事例

 
  
// 2: 基本信息Date/Time:   OS Version:  Report Version:// 3: 异常Exception Type: Exception Codes: Highlighted Thread: // 4: 线程回溯Thread 0 name: Dispatch queue: com.apple.main-threadThread 0:Thread 1:// 5: 线程状态Thread 0 crashed with ARM Thread State (32-bit):// 6: 二进制映像Binary Images:


(1) 进程信息
是闪退进程的相关信息。
Incident Identifier是崩溃报告的唯一标识符。
CrashReporter Key 是与设备标识相对应的唯一键值。
Hardware Model 标识设备类型。
Process 是应用名称。
(2) 基本信息
这部分给出了一些基本信息,包括闪退发生的日期和时间
(3) 异常
在这部分,你可以看到闪退发生时抛出的异常类型。还能看到异常编码和抛出异常的线程
(4) 线程回溯
这部分提供应用中所有线程的回溯日志。 回溯是闪退发生时所有活动帧清单。
二进制库的名称
调用方法的地址
(5) 线程状态
这部分是闪退时寄存器中的值。一般不需要这部分的信息,因为回溯部分的信息已经足够让你找出问题所在。
(6) 二进制映像
这部分列出了闪退时已经加载的二进制文件。
 通过查看这些内容就能获取完整的错误信息了,从而定位到错误的所在。
 
-------------------彩蛋来喽-----------------------
 
附一个软件大全的网址:http://www.sdifenzhou.com/category/black-apple/apple-software/page/6/

 转载请附链接:http://www.cnblogs.com/windsSunShine/p/5869465.html 

【个人看法,不喜勿喷】