小编Wol*_*ine的帖子

如何找到内存警告的真正原因以及如何在iOS应用中解决

我经历了许多与内存管理,ARC,内存管理技术相关的帖子,autoreleasepool并使用仪器工具来检测哪些代码导致了内存警告,但在我的情况下,我无法找出确切的原因.

您必须了解的有关该应用的基本信息:

  1. 我们开发了一款iPad应用程序.在某些情况下,我们必须使用超过2000个图像,所以当我的应用程序启动时,我们不想显示它们占位符图像(客户端要求).为了实现这一点,我们使用SDWebImage,将图像存储在磁盘上,然后我们从那里加载图像.

  2. 我有很多核心动画,如"Gennie效果",显示弹出窗口和许多其他核心动画.

我们在项目中使用了ARC,我们发现由于内存警告应用程序随机崩溃.

我们使用了仪器 "分配"来查找脏内存.

以前我们分析日志,我们SDWebImage在DISK中存储图像,它解决了经常崩溃的应用程序,但仍然由于内存警告应用程序崩溃.

当我们深入研究时,我们发现"匿名虚拟机"在iPad中的任何屏幕切换时都会继续进行内存并且不会释放内存.

以下是我们在设备上分析应用程序的截图.

在此输入图像描述

任何人请建议提示或编码技术或任何我们可以减少内存负载和解决内存警告的想法.

任何帮助将不胜感激.谢谢.

memory-management objective-c ipad ios automatic-ref-counting

11
推荐指数
1
解决办法
1132
查看次数

以编程方式在iphone sdk中录制视频

我正在尝试实现如下功能

最终录制的视频 =" 从前置摄像头捕获视频 + 从视频录制音频(我通过视频播放器播放)".

有关更多信息,请参阅附加屏幕截图.

在此输入图像描述

使用下面给出的我的代码块:最后我得到的是一个视频,但没有音频.

但我想要实现的是" 最终录制的视频必须是以下内容的组合:' 从我的前置摄像头捕获的视频 + 仅录制我正在播放的视频文件中的音频.'"

我怎样才能实现上述功能?

这是我的代码.

" 录制 "按钮单击方法如下:

-(void) startRecording
{
    [self initCaptureSession];

    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
                                         pathForResource:@"video"
                                         ofType:@"mp4"]];
    [self playMovieAtURL:url];

    [self startVideoRecording];
}
Run Code Online (Sandbox Code Playgroud)

" initCaptureSession ":使用此方法我使用前置摄像头使用"AVCaptureSession"录制视频

-(void) initCaptureSession
{
    NSLog(@"Setting up capture session");
    captureSession = [[AVCaptureSession alloc] init];

    NSLog(@"Adding video input");

    AVCaptureDevice *VideoDevice = [self frontFacingCameraIfAvailable];

    if (VideoDevice)
    {
        NSError *error;
        videoInputDevice = [AVCaptureDeviceInput deviceInputWithDevice:VideoDevice error:&error];
        if (!error)
        { …
Run Code Online (Sandbox Code Playgroud)

iphone camera objective-c video-recording ios

9
推荐指数
1
解决办法
1万
查看次数

如何根据设备类型定义常量(iPad/iphone)

我试图在我的项目中的一个文件中定义常量.

我知道,我可以像下面这样定义它

const CGSize kSize = { 46.f, 44.f };
Run Code Online (Sandbox Code Playgroud)

但我想要实现这样的目标:

if device type iPad

const CGSize kSize = { 146.f, 144.f };

else

const CGSize kSize = { 46.f, 44.f };
Run Code Online (Sandbox Code Playgroud)

是否有可能实现上述目标?

任何人都可以帮助我如何实现这一目标.任何帮助或任何指导都会有所帮助.

iphone const objective-c ios

3
推荐指数
1
解决办法
4432
查看次数

如何从 xcode / mac 中删除 Fabric 插件

我已经安装了 Fabric 插件作为 Twitter 应用程序集成的一部分。然后织物应用程序每次都会崩溃。所以谁能告诉我如何完全卸载 FABRIC 插件,以便我可以重新开始完整的程序。任何帮助将不胜感激。

xcode twitter-fabric xcode7 xcode-plugin

3
推荐指数
2
解决办法
2455
查看次数

如何使UIWebview透明.

我有一个带有Alpha = 1.0的UIWebView的XIB,背景设置为Clear Color,而Opaque未设置.在这个XIB上,我使用以下代码将图像设置为背景:

UIWebView显示静态html:

<html><head></head><body style=\"margin:0 auto;text-align:center;background-color: transparent; color:white\">...</body></html>
Run Code Online (Sandbox Code Playgroud)

任何方案?

iphone uiwebview

2
推荐指数
1
解决办法
663
查看次数

使用NSKeyedArchiver和Userdefault保存结构数组,其中对象符合NSCoding

作为面向协议的编程概念,我使用Struct创建了模型。

我想将“ ”的数组保存Struct到Userdefault中。但是我在此模型的数组的编码/解码中遇到问题。

这是我的模特Struct

struct Room {
    let name : String
    let id : String
    let booked : Bool
}
Run Code Online (Sandbox Code Playgroud)

我在这里创建了这样的扩展

extension Room {


func decode() -> Room? {
    let userClassObject = NSKeyedUnarchiver.unarchiveObject(withFile: RoomClass.path()) as? RoomClass
    return userClassObject?.room
}

func encode() {
    let personClassObject = RoomClass(room: self)
    NSKeyedArchiver.archiveRootObject(personClassObject, toFile: RoomClass.path())
}

class RoomClass: NSObject, NSCoding {

    var room : Room?

    init(room: Room) {
        self.room = room
        super.init()
    }

    class func path() -> …
Run Code Online (Sandbox Code Playgroud)

nsuserdefaults ios swift

1
推荐指数
1
解决办法
1926
查看次数