我有一个应用程序,允许附加多个视频资产并将一个或多个音轨添加到合成.一切似乎都有效,我可以使用最终的合成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子文件夹中.(希望这很清楚.)
如何在屏幕上显示当前类型的鼠标光标?(不仅在我的应用程序窗口,全局.)或者至少可以检测当前是否显示默认光标?无论是Carbon还是Cocoa都可以 - 甚至是其他工作API,最好是官方API.
这是我尝试过的:
NSCursor *sysCursor = [NSCursor currentSystemCursor];
if (sysCursor == nil) {
NSLog(@"nil");
}
if ([sysCursor isEqual: [NSCursor arrowCursor]] ||
[sysCursor isEqual: [NSCursor contextualMenuCursor]] ||
[sysCursor isEqual: [NSCursor closedHandCursor]] ||
[sysCursor isEqual: [NSCursor crosshairCursor]] ||
[sysCursor isEqual: [NSCursor disappearingItemCursor]] ||
[sysCursor isEqual: [NSCursor dragCopyCursor]] ||
[sysCursor isEqual: [NSCursor dragLinkCursor]] ||
[sysCursor isEqual: [NSCursor IBeamCursor]] ||
[sysCursor isEqual: [NSCursor openHandCursor]] ||
[sysCursor isEqual: [NSCursor operationNotAllowedCursor]] ||
[sysCursor isEqual: [NSCursor pointingHandCursor]] ||
[sysCursor isEqual: [NSCursor resizeDownCursor]] ||
[sysCursor isEqual: [NSCursor …Run Code Online (Sandbox Code Playgroud) 我的Mac App使用辅助功能API来移动(其他应用程序的)调整大小窗口.
我想将我的应用程序提交给MAS(Mac App Store).我已经读过要向MAS提交应用程序必须打开沙盒.
当我打开沙盒时,我的代码无法通过辅助功能API找到焦点窗口(始终返回NULL).问题是:辅助功能API不能与沙盒一起使用?
我注意到Mac App Store中有应用程序使用辅助功能API,现在不是强制沙盒吗?
提前致谢.
我有一个对话窗口,可以通过自定义取消按钮或使用系统红色窗口按钮取消.取消对话框时,我需要执行一些简单的逻辑.如何检测到用户按下了红色按钮?
我知道我可以使用-windowWillClose:委托回调检测正在关闭的窗口.但是,当对话成功后以编程方式关闭窗口时,也会调用此回调.我也知道我可以简单地设置一个BOOL标志,但有更好的解决方案吗?如果我能检测到红色按钮激活,那将是最好的.
我一直在关注一些教程,而且我正在堕落.有人可以帮忙吗?
我有以下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,我的代码返回超级而不是类,所以它是如何工作的?调用代码的得分值是多少?
当然,是的它确实有效,但我不明白为什么:-(
是自动调用iPhone的代码吗?
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:11111111111"]]);
Run Code Online (Sandbox Code Playgroud) 我有一个Cabal测试目标:
test-suite Tests
type: exitcode-stdio-1.0
main-is: Main.hs
hs-source-dirs: test, src
build-depends: base, …
default-language: Haskell2010
Run Code Online (Sandbox Code Playgroud)
一个简单的测试Main.hs:
import Test.HUnit
testSanity = TestCase $ assertEqual "Should fail" 2 1
main = runTestTT testSanity
Run Code Online (Sandbox Code Playgroud)
现在运行cabal test通行证:
Test suite Tests: RUNNING...
Test suite Tests: PASS
Test suite logged to: dist/test/Project-0.1.0-Tests.log
1 of 1 test suites (1 of 1 test cases) passed.
Run Code Online (Sandbox Code Playgroud)
即使在测试套件日志中正确记录了失败:
Test suite Tests: RUNNING...
Cases: 1 Tried: 0 Errors: 0 Failures: 0
### Failure:
Should fail
expected: 2 …Run Code Online (Sandbox Code Playgroud) 我想在Swift中表示一个通用的JSON对象:
let foo: [String: Any] = [
"foo": 1,
"bar": "baz",
]
Run Code Online (Sandbox Code Playgroud)
但[String: Any]编译器建议的类型并不能很好地工作.我无法检查该类型的两个实例是否相等,例如,虽然这应该可以使用两个JSON树.
什么也行不通的是使用Codable机器将该值编码为JSON字符串:
let encoded = try JSONEncoder().encode(foo)
Run Code Online (Sandbox Code Playgroud)
哪个因错误而爆炸:
fatal error: Dictionary<String, Any> does not conform to Encodable because Any does not conform to Encodable.
Run Code Online (Sandbox Code Playgroud)
我知道我可以引入一个精确的类型,但我遵循通用的JSON结构.我甚至尝试为泛型JSON引入一种特定类型:
enum JSON {
case string(String)
case number(Float)
case object([String:JSON])
case array([JSON])
case bool(Bool)
case null
}
Run Code Online (Sandbox Code Playgroud)
但是当实现Codable这个枚举时我不知道如何实现encode(to:),因为一个键控容器(用于编码对象)需要一个特定的CodingKey参数,我不知道如何得到它.
是否真的不可能创建一个Equatable通用的JSON树并使用它编码Codable?
cocoa ×4
iphone ×2
macos ×2
xcode ×2
audio ×1
avfoundation ×1
cabal ×1
codable ×1
cursor ×1
frameworks ×1
haskell ×1
ios ×1
json ×1
macos-carbon ×1
mouse ×1
nswindow ×1
objective-c ×1
sandbox ×1
swift ×1
types ×1
unit-testing ×1