Widget中的一个注意事项

在一次开发周期中,我们项目加入了Widget,整个过程比较顺利, 但是在发版的时候,发现ipa包大了14M。最后追踪原因,发现是开发Widget时,一个特别容易出错的地方导致的。具体如下:

由于Widget和主项目其实是两个app,所以Widget使用主项目的class时,我们会使用这样的步骤:

1.在主项目里选择.m文件,然后点击右上角的Utilities,在Target Membership里选上Widget即可:

但是,如果你想使用主项目的图片资源,并且图片是放在Assets.xcassets里的,那么当你想把其中某一张图片加到widget里的时候,其实你会把所有的图片资源都加入到widget里。因为Assets.xcassets被xcode当做是一个文件,所有你没有办法只把其中的某一张图片加入widget的target。那么项目里其实图片资源是double的。我们的图片资源一共14M,那么最后的ipa包白白大了14M。

s

所以,想使用主项目的图片,还是老老实实copy一份到widget文件夹下吧。

时间: 2024-07-31 18:31:42

Widget中的一个注意事项的相关文章

Windows 已在 数据结构_顺序表.exe 中触发一个断点——new和delete注意事项

实现数据结构的顺序表的类时,输入,改,删,查都可以,但是最后析构函数时持续出错 错误提示"Windows 已在 数据结构_顺序表.exe 中触发一个断点" int *elem=new int(LIST_INIT_SIZE); if(!elem)cout<<"overflow"<<endl; if(leng>LIST_INIT_SIZE) cout<<"error"; else {    length=le

AW笔记本升级SSD,外接双屏中的一些注意事项

自己留一个mark,以后提醒用. 1)机械硬盘状态下利用alien sprawn创建的系统恢复U盘,无法在SSD下使用,因为SSD中没有recovery分区,只能使用随机携带的系统恢复光盘: 2)最好在SSD安装系统之前,先用机械硬盘引导,在windows下使用diskgenious进行格式化分区,4k字节对齐: 3)将SSD安装在硬盘盘位1,因为是最经常使用,并在bios中设置SATA option为ACHI: 4)利用恢复光盘进行系统安装,记住选择SSD的分区: 5)系统安装成功后,按照网上

IOS 中NSTimer使用注意事项

1.初始化 + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo; + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelec

Storm中Spout使用注意事项小结

Storm中Spout用于读取并向计算拓扑中发送数据源,最近在调试一个topology时遇到了系统qps低,处理速度达不到要求的问题,经过排查后发现是由于对Spout的使用模式不当导致的多线程同步等待.这里罗列几点个人觉得编写Spout代码时需要特别注意的地方: 1. 最常用的模式是使用一个线程安全的queue,如BlockingQueue,spout主线程从queue中读取数据:另外的一个或多个线程负责从数据源(如各种消息中间件.db等)读取数据并放入queue中. 2. 如果不关心数据是否丢

关于myBatis配置中的一些注意事项

最近在学习mybatis,在网上查阅资料,并按照别人的范例来测试,总会出一些错误,这里把配置过程中的一些注意事项梳理一下. 一.导包(用eclipse开发) 1.如果你新建的是普通的project,需要在工程目录下,新建一个文件夹(一般为lib),然后需要手动导包,具体操作是:选中包右键-Build Path-add to Build Path.之前的文件夹不能删除,因为它实际上加载的是这些包的路径. 2.如果你新建的是web工程,只需要把相关包放到WEB-INF/lib 中即可,它会自动导包,

asp.net mvc3 数据验证(四)—Remote验证的一个注意事项

原文:asp.net mvc3 数据验证(四)-Remote验证的一个注意事项         前几篇把asp.net mvc3 中基于Model的主要数据验证的方法都已经讲完了,本节纯粹只是讲一个我曾经遇到的问题,因为和数据验证相关,所以就放在了这系列的文章中. 经过前几篇文章的分享,大家应该觉得asp.net 自带的Remote远程数据注解比较好用,但是我在实际使用中却遇到了问题. 首先,一般来说对于一个属性的验证可能需要不止一个的远程验证,比如对于用户名来说,我们需要对于它的长度做一些限制

mvc中做一个ajax读取数据的感想

一个简单的问题纠结好好半天 一个开始随手写完,进行调试,发现ajax根本不进服务器的方法,当时想不进服务器方法估计是js方法写错了,就在js中找错,看那个方法就那几句也没找到错误,然后就想是不是自己ajax的方法写错了,然后就到网上找关于ajax的语法,结果在w3c中找到ajax,但是这个ajax是JavaScript的xmlhttprequest,虽然不是jquery的简单写法,但是看完之后还是有一些东西更明白了,但是这并不是重点,重点是我还是没有解决进不了服务器方法的错误,没找到只能再找了,

4.32 继承中构造方法的注意事项

/* 如果父类没有无参构造方法,那么子类的构造方法会出现什么现象呢? 报错. 如何解决呢? A:在父类中加一个无参构造方法 B:通过使用super关键字去显示的调用父类的带参构造方法 C:子类通过this去调用本类的其他构造方法 子类中一定要有一个去访问了父类的构造方法,否则父类数据就没有初始化. 注意事项: this(...)或者super(...)必须出现在第一条语句上. 如果不是放在第一条语句上,就可能对父类的数据进行了多次初始化,所以必须放在第一条语句上. */ class Father

OSX: 10.10 Yosemite Developer Preview 2安装的一个注意事项

上一篇说到,安装完10.10 DP2之后,在显示每个分区的磁盘工具中,各个分区看着有些异样,这是因为它把原来的普通分区转化为了Core Storage了. 下面是我安装在普通Mac3 (disk1s5)分区之后,磁盘的内部情况.参考我前面的三篇blog(OSX: 逻辑卷管理系统Core Storage(1), OSX: 逻辑卷管理系统Core Storage(2)和OSX: 逻辑卷管理系统Core Storage(3))来看即能看懂. 下面是运行diskutil list的结果,原来disk1s