我们的小软件商店最近从Subversion迁移到Git,因为我们的程序员更好地发现了Git.迁移并非轻松,我们遇到子模块功能问题.我的主要抱怨是,一旦repo包含子模块,你就不能简单地克隆它并期望它能够正常工作.您必须执行额外的步骤来初始化和下载子模块.后续拉动应该自动更新子模块,这样就可以了.但是当我添加一个新的子模块时,推送提交和人们拉动,他们不会自动获得新的子模块,他们必须git submodule update再次手动.
这是愚蠢的,因为人们不能简单地用子模块拉回购物并期望它的构建.这种理解是否正确?程序员可以简单地编写脚本或别名来在接收新提交后更新子模块,但对于我们的非程序员子模块来说很痛苦.我想提出一个解决方案,无论使用何种Git客户端,克隆/拉动后repo都能正常工作.
我有什么选择?
有没有人得到UIFileSharingEnabled或CFBundleDocumentTypes工作?我将UIFileSharingEnabled添加为我的plist,并使用下面链接中的Apple示例来获取CFBundleDocumentTypes,但似乎无法使其工作.
我没有在iTunes中看到我的应用程序在文件共享下,当我在mail.app中点击它时,我没有选择打开我在我的应用程序中注册的文档
我正在考虑为iPhone编写应用程序.但我对Objective-c语言感到困惑.我说我必须做自己的记忆管理吗?Objective-C是一种托管语言,如C#和/或Java吗?
谢谢!
我无法在任何地方找到这个答案.当方法头中有sender参数时,它是什么意思?它是代表调用它的实例,还是调用它的方法?
今天我读到defer了Go语言中的陈述:
一个延迟声明推动一个函数调用到列表中.在周围函数返回后执行已保存调用的列表.延迟通常用于简化执行各种清理操作的功能.
我认为在Objective-C中实现类似的东西会很有趣.你知道怎么做吗?我考虑过调度终结器,自动释放的对象和C++析构函数.
自动释放的对象:
@interface Defer : NSObject {}
+ (id) withCode: (dispatch_block_t) block;
@end
@implementation Defer
- (void) dealloc {
block();
[super dealloc];
}
@end
#define defer(__x) [Defer withCode:^{__x}]
- (void) function
{
defer(NSLog(@"Done"));
…
}
Run Code Online (Sandbox Code Playgroud)
自动释放的对象似乎是至少持续到函数末尾的唯一解决方案,因为其他解决方案将在当前范围结束时触发.另一方面,他们可以在记忆中停留更长时间,这将是一个麻烦.
Dispatch终结器是我的第一个想法,因为块存在于堆栈中,因此当堆栈展开时我可以轻松地执行某些操作.但是在浏览文档后看起来我不能将一个简单的"析构函数"函数附加到块中,是吗?
C++析构函数大致相同,我会创建一个基于堆栈的对象,其中一个块在析构函数运行时执行.这会将普通.m文件转换为Objective-C++ 有一个丑陋的缺点吗?
我真的不考虑在生产中使用这些东西,我只是对各种解决方案感兴趣.你能想出一些有效但没有明显缺点的东西吗?基于范围和基于功能的解决方案都很有趣.
我有一个应用程序,允许附加多个视频资产并将一个或多个音轨添加到合成.一切似乎都有效,我可以使用最终的合成AVPlayer(尽管音频水平似乎很低).将合成导出到文件后,音轨缺失.
我的代码主要基于WWDC10会话的AVEditDemo示例代码.我已经针对AVEditDemo代码仔细检查了我的代码,但无法找到可能存在的问题.我也检查了论坛,但没有太多与AVFoundation相关的帖子/解决方案.
我们非常欢迎任何帮助.干杯,
让 - 皮埃尔·
使用额外音轨构建合成的方法
笔记:
compositionArray:包含构建组合的资产.
AssetView:包含AVURLAsset的对象.
- (AVMutableComposition *)buildCompositionObjects
{
// no assets available, return nil
if ([compositionArray count] < 1)
{
return nil;
}
// get the asset video size
AssetView * view = [compositionArray objectAtIndex:0];
AVURLAsset * asset = view.asset;
CGSize videoSize = [asset naturalSize];
// create new composition
AVMutableComposition * cmp = [AVMutableComposition composition];
// set the size
cmp.naturalSize = videoSize;
// build composition
[self buildComposition:cmp];
// add any extra audio …Run Code Online (Sandbox Code Playgroud) 我习惯从外面为我的对象提供依赖项.Interface Builder是一个帮助实现此目的的工具,但我无法使用多个笔尖.一旦我将主笔尖分成更多文件,我就不能再在不同笔尖中的对象之间建立连接.使用文件所有者并没有多大帮助,因为它只允许我将一个对象传递给一个笔尖.
例:

这里A和B是一些更高级别的对象,C和D是某种更低级别的服务.只要所有物体都在一个大笔尖内(第一张图片),一切都很好.但是当我将笔尖分开分开A和B时,我很难将它们连接到C和D.(显然我不想创建C和D的两个实例,我希望A和B都能说同一个C和D不使用单身人士.)
是否可以在Interface Builder中执行此操作?怎么样?
我有一个使用几个自定义框架的Mac Cocoa应用程序.(Apple将它们称为私有,它是与应用程序一起分发在应用程序包中的框架.)在每个框架中都有一个Headers包含框架头文件的文件夹.在生成的应用程序包中不需要这些,我想将它们保密.目前我使用Run Script构建阶段,其中包含以下行:
# Remove all headers from our private frameworks
find "${TARGET_BUILD_DIR}" -name Headers -print0 | xargs -0 rm -rf
Run Code Online (Sandbox Code Playgroud)
这是做到这一点的方式,还是有更好的方法?
关于我的项目结构的更多信息:我在我的主项目中嵌套了三个Xcode项目,这些项目将我的私有框架作为他们的产品.框架被设置为我的主要目标的目标依赖项.设置的最后一部分是复制文件构建阶段,它接受框架并将它们复制到应用程序包内的Frameworks子文件夹中.(希望这很清楚.)
我的Mac App使用辅助功能API来移动(其他应用程序的)调整大小窗口.
我想将我的应用程序提交给MAS(Mac App Store).我已经读过要向MAS提交应用程序必须打开沙盒.
当我打开沙盒时,我的代码无法通过辅助功能API找到焦点窗口(始终返回NULL).问题是:辅助功能API不能与沙盒一起使用?
我注意到Mac App Store中有应用程序使用辅助功能API,现在不是强制沙盒吗?
提前致谢.
我一直在关注一些教程,而且我正在堕落.有人可以帮忙吗?
我有以下init,这是一个实例方法.
- (id) initWithScore:(int) s {
self = [super init];
if (self) {
score = s;
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
现在通过代码阅读我将自己设置为超级init,因此self现在指向super.然后我检查自我是否有效并将得分设置为我在InitWIthScore上发送的值.到目前为止我有这个.
但是现在我返回指向超级的self,那么我如何返回我的子类?
因此,让我们说有人叫我的班级传递100,我的代码返回超级而不是类,所以它是如何工作的?调用代码的得分值是多少?
当然,是的它确实有效,但我不明白为什么:-(
objective-c ×4
cocoa ×3
iphone ×2
audio ×1
avfoundation ×1
file-io ×1
frameworks ×1
git ×1
go ×1
info.plist ×1
ios ×1
ipad ×1
macos ×1
plist ×1
sandbox ×1
xcode ×1