小编Poc*_*chi的帖子

如果我使用来自(__bridge)的CGImageSourceCreateWithData,是否需要"CFRelease"?

我的问题很简单,我想知道方法"CGImageSourceCreateWithData"是否创建了一个复制我提供的数据的新对象,以便在我不再需要它时,我必须释放它,或者它只是创建一个引用我已经拥有的数据,如果我发布它,我将丢失这些数据(并可能有错误的访问错误).

该问题与使用(__bridge CFDataRef)作为源数据有关.让我在ARC模式下使用Core Foundation对象作为免费电话.

考虑以下函数(或方法,不确定它是如何调用的):

- (void)saveImageWithData:(NSData*)jpeg andDictionary:(NSDictionary*)dicRef andName:(NSString*)name
{
    [self setCapturedImageName:name];

    CGImageSourceRef  source ;

    // Notice here how I use __bridge
    source = CGImageSourceCreateWithData((__bridge CFDataRef)jpeg, NULL);

    CFStringRef UTI = CGImageSourceGetType(source); 

    NSMutableData *dest_data = [NSMutableData data];

    // And here I use it again
    CGImageDestinationRef destination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)dest_data,UTI,1,NULL);

    CGImageDestinationAddImageFromSource(destination,source,0, (__bridge CFDictionaryRef) dicRef);

    BOOL success = NO;
    success = CGImageDestinationFinalize(destination);

    if(!success) {
        NSLog(@"***Could not create data from image destination ***");
    }

    // This only saves to the disk
    NSArray …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c core-foundation ios

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

为什么将GL_ELEMENT_ARRAY_BUFFER绑定到0会产生memmove错误?

我有一个错误,花了我很长时间来修复.在我评论以下行之前,我一直得到EXC_BAD_ACCESS和对memmove错误的引用而没有任何进一步的描述:

[self loadShaders];

glGenVertexArraysOES(1, &_vao);
glBindVertexArrayOES(_vao);

// Vertex Buffer
glGenBuffers(1, &_vertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, _vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(Vertices), Vertices, GL_STATIC_DRAW);

glEnableVertexAttribArray(ATTRIB_VERTEX);
glVertexAttribPointer(ATTRIB_VERTEX, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), 0);

glEnableVertexAttribArray(ATTRIB_TEXTURE);
glVertexAttribPointer(ATTRIB_TEXTURE, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (GLvoid*) (sizeof(float) * 7));

// Index Buffer
glGenBuffers(1, &_indexBuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBuffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(Indices), Indices, GL_STATIC_DRAW);

glBindBuffer(GL_ARRAY_BUFFER,0);  

////////// COMMENTED THIS ONE //////////////
//glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,0);//
////////////////////////////////////////////

glBindVertexArrayOES(0);
Run Code Online (Sandbox Code Playgroud)

我认为将缓冲区绑定到0意味着解除绑定,所以我真的无法理解这会让我的应用程序崩溃.

谢谢你的信息!我只是不关心这个问题......

我的结构:

const Vertex Vertices[4] = {
    {{0.75, -1, 0}, {1, 0, 0, 1},     {0.125, 0.833496}},
    {{0.75, 1, 0}, {0, 1, 0, 1},      {0.125, 1}}, …
Run Code Online (Sandbox Code Playgroud)

ios opengl-es-2.0

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

CFRelease中的空指针(由static anylizer讲述)

我得到了这段代码:

- (void)saveImageWithData:(NSData*)jpeg andDictionary:(NSDictionary*)dicRef andName:(NSString*)name
{
    self.capturedImageName = name;
    self.dict = dicRef;

    NSLog(@"%@",dicRef);

    CGImageSourceRef  source ;
    source = CGImageSourceCreateWithData((__bridge CFDataRef)jpeg, NULL);

    CFStringRef UTI = CGImageSourceGetType(source); //this is the type of image (e.g., public.jpeg)

    NSMutableData *dest_data = [NSMutableData data];


    CGImageDestinationRef destination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)dest_data,UTI,1,NULL);

    if(!destination) {
        NSLog(@"***Could not create image destination ***");
    }

    //add the image contained in the image source to the destination, overwriting the old metadata with our modified metadata
    CGImageDestinationAddImageFromSource(destination,source,0, (__bridge CFDictionaryRef) dicRef);

    //tell the destination to write …
Run Code Online (Sandbox Code Playgroud)

xcode clang-static-analyzer ios

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

NSLog on Objects(如UIButton,UIView,NSString,NSDictionary)和%@描述

很抱歉,如果这个问题太简单,但我总是想知道,我想听听专家的意见.

我一直使用NSLog(@"%@",对象); 检查NSString的字符串,或查看NSDictionary内部的内容.所以我很好奇你是否可以将这种技术用于NSLog中目标C中的所有对象.

根据我的经验,NSLog到一个没有像内容这样的文本的对象只会给你实例描述,它将是我认为的对象类和实例编号(如UIViewUIButton).

是否有任何情况我会获得EXE_BAD_ACCESS来记录对象(不是结构/原始变量)?或者我可以像往常一样继续这样做吗?

谢谢.

objective-c ios

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

锚点在Cocos2d-x DrawNode中

我一直在尝试绘制节点,到目前为止,我得到了我想要的结果,但有点使用试错法.

我对绘制节点的主要问题是我似乎无法理解锚点的工作原理.

通常我会将锚点调整到中间,例如,在某处移动一个精灵,然后精灵图像的中间位于锚点所在的中心.

但是,如何更改锚点在绘制节点中是否真的有效?它甚至有用吗?(我开始相信它没有)

锚点是否会影响绘图?或者只是最终的图像?或无?

现在,当我画一些东西时,它似乎被绘制成好像我在画布周围(0,0)并且移动锚点似乎没有做任何事情(无论我是否在绘图之前或之后移动它)

cocos2d-x cocos2d-x-3.0

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

UINavigationBar 外观色调颜色影响系统窗口、错误还是预期?

在 iOS 10 中,可以使用以下代码行为所有应用程序设置导航栏的色调:

UINavigationBar.appearance().barTintColor = UIColor.green
Run Code Online (Sandbox Code Playgroud)

然而,当在 iOS 11 中做同样的事情时,它似乎也会影响系统视图。例如,当使用以下代码显示 UIActivityViewController 时:

let titleText = "SOME TITLE"
let urlStr = "https://google.com"
let activityItems = [titleText,urlStr]
let activityViewController = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)
Run Code Online (Sandbox Code Playgroud)

并选择“添加到笔记”选项,导航栏显示为之前设置的颜色(在这种情况下为绿色)

我想问一下,这是一个错误还是故意的?

(我已经在一个多月前向苹果提交了错误报告,但没有得到回应)

这是问题的屏幕截图:

在此处输入图片说明

ios11

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

在目标C中将许多变量设置为0

我只是想知道是否有一个特殊的方法或调用将许多变量设置为0.我喜欢20并且代码看起来非常难看,因为我让它们像这样对齐:

x=0;
y=0;
z=0;
etc...
Run Code Online (Sandbox Code Playgroud)

由于我认为可能存在许多方便的功能.

谢谢

PD:我正在使用Objective C,Xcode 4.2

objective-c

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

为什么向量内的结构中的布尔值没有被更新?

这可能听起来像一个非常基本的问题,但我现在试图修复一个简单的错误超过一个小时,我似乎无法理解发生了什么.

我的头文件中有以下结构声明:

struct StudentBody
{
    string name;

    Vec2 position;

    bool disabled;

    StudentBody(string name, Vec2 position) : name(name), position(position) {}
};
Run Code Online (Sandbox Code Playgroud)

这个结构被填充到一个类型的向量中:

std::vector<StudentBody> students_real;
Run Code Online (Sandbox Code Playgroud)

像这样:

students_real =
    {
        StudentBody("student1",Vec2(DISPLAY_WIDTH - 50, LOWER_MARGIN + 100)),
        StudentBody("student2",Vec2(DISPLAY_WIDTH - 100, LOWER_MARGIN + 100)),
        StudentBody("student3",Vec2(DISPLAY_WIDTH - 150, LOWER_MARGIN + 100)),
        StudentBody("student4",Vec2(DISPLAY_WIDTH - 200, LOWER_MARGIN + 100))
    };
Run Code Online (Sandbox Code Playgroud)

默认情况下,所有学生都将其"禁用"设置为false.

然后我有一个"更新"方法,用屏幕刷新率触发,在该方法中我有以下代码:

for (auto it = students_real.begin(); it != students_real.end(); it++)
        {
            auto student_to_check = *it;

            CCLOG("student %s disabled -> %i",student_to_check.name.c_str(),student_to_check.disabled);

            if (student_to_check.name == "student1" || student_to_check.disabled) { …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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