小编Cin*_*lia的帖子

在C字符串中'\ 0'之后内存会发生什么?

令人惊讶的简单/愚蠢/基本问题,但我不知道:假设我想让我的函数的用户返回一个C字符串,其长度我不知道在函数的开头.我可以在开始时仅在长度上放置上限,并且根据处理,尺寸可能缩小.

问题是,分配足够的堆空间(上限)然后在处理期间终止字符串是否有任何问题?即如果我在分配的内存中间插入'\ 0',(a.)是否free()仍能正常工作,并且(b.)'\ 0'之后的空格变得无关紧要?一旦'\ 0'被添加,内存是否会被返回,或者它是否位于占用空间直到free()被调用?将这个悬空空间留在那里通常是不好的编程风格,为了节省一些前期编程时间,在调用malloc之前计算必要的空间?

为了给出这个上下文,假设我想删除连续的重复项,如下所示:

输入"你好oOOOo !!" - >输出"Helo oOo!"

...以及下面的一些代码显示了我如何预先计算操作产生的大小,有效地执行两次处理以使堆大小正确.

char* RemoveChains(const char* str)
{
    if (str == NULL) {
        return NULL;
    }
    if (strlen(str) == 0) {
        char* outstr = (char*)malloc(1);
        *outstr = '\0';
        return outstr;
    }
    const char* original = str; // for reuse
    char prev = *str++;       // [prev][str][str+1]...
    unsigned int outlen = 1;  // first char auto-counted

    // Determine length necessary by mimicking processing
    while (*str) {
        if (*str != …
Run Code Online (Sandbox Code Playgroud)

c string malloc pointers c-strings

64
推荐指数
6
解决办法
7772
查看次数

你能用数字开始一个班级名字吗?

C++中,是否可以用数字启动类名?例如,

template <class T> class 2DArray {

public:
    // 1D ARRAY CLASS
    class 1DArray {
    public:
        1DArray() { Create(); }
        1DArray(iterator arr) : array1d_(arr) { }
        explicit 1DArray(size_type cols, const T& t = T()) { Create(cols, t); }
        1DArray(const 1DArray& arr) { Create(arr.begin(), arr.end()); }
        1DArray& operator=(const 2DArray&);
        ~1DArray() { Uncreate(); }

        T& operator[](size_type n) {
            return array1d_[n];
        }
        const T& operator[](size_type n) const {
            return array1d_[n];
        }
}
Run Code Online (Sandbox Code Playgroud)

c++ naming class

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

如何从UICollectionViewCell将pan手势传递给UICollectionVIew?

UICollectionView实现了一个基于网格的自定义布局UICollectionViewCells.为了允许单元格响应拖动,我单独UIPanGestureRecognizer向每个单元格添加一个.

UICollectionView当我向下触摸并从单元格之间的点开始向左/向右滑动时,静止滚动(水平),但只要将平移手势识别器添加到单元格中,CollectionView当我开始轻扫时,似乎拒绝滚动细胞.

现在,我将水平左/右拖动与垂直向上/向下拖动分开,因此拖出单元格(垂直滑动)和滚动CollectionView(水平滑动)之间不应存在任何冲突.在这种情况下,如何将滑动传递到集合/滚动视图,以便它知道像正常一样滚动?不得不开始在细胞之间的边界或间隔是非常烦人的.

一旦我从一个单元格中移除了平移手势,无论我是开始在单元格上还是在单元格之间滑动,滚动都会正常工作.

编辑:下面发布的所需平移手势行为作为当前代码

// Handle pans by detecting swipes:
-(void) handlePan:(UIPanGestureRecognizer*)recognizer
{
    // Calculate touch location
    CGPoint touchXY = [recognizer locationInView:masterWindowView];

    // Handle touch
    if (recognizer.state == UIGestureRecognizerStateBegan)
    {
        gestureWasHandled = NO;
        pointCount = 1;
        startPoint = touchXY;
    }

    if (recognizer.state == UIGestureRecognizerStateChanged)
    {
        ++pointCount;

        // Calculate whether a swipe has occurred
        float dX = deltaX(touchXY, startPoint);
        float dY = deltaY(touchXY, startPoint);

        BOOL finished = YES;
        if …
Run Code Online (Sandbox Code Playgroud)

objective-c foundation ios

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

在UIViewController视图中使一切变暗,除了一些UIImageViews

我在工作iOS 6.是否有一种简单的方法可以使UIViewController屏幕上的所有内容变暗(即添加较暗的色调),除了一些选择UIImageViews

就像,目标是使非黑暗的图像脱颖而出.用户清楚地知道那些是唯一有效或可选择的UIImageViews- 当用户点击有效时UIImageView,屏幕将恢复正常.

只是为了澄清,我不只是想要消除其他一切,只是让它变暗,就像添加一个透明的0.5 alpha层一样.

我看了一下:将视图变暗,看起来像是禁用的,看起来非常相关,除了我不是单一的UIImageView,而是一个UIViewControllerUIImageViews子视图的.即使我在我的超级视图中的每个子视图上运行屏蔽代码,我认为它仍然不会覆盖整个屏幕.

谢谢你的帮助.

xcode objective-c uiviewcontroller uiimageview ios

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

ios动画.嵌套动画如何影响持续时间?

假设我有一个定时的UIAnimation,格式为

[UIView animateWithDuration:DURATION_X
                 animations:^
 {
     [function that might contain a separate animation with DURATION_Y]
 }
                 completion:^(BOOL finished)
 {
     [function that might contain a separate animation with DURATION_Z]
 }];
Run Code Online (Sandbox Code Playgroud)

如果嵌套动画中也有持续时间,那么它会如何影响外部动画?无论DURATION_X恰好是什么,内部动画是分别用DURATION_Y和DURATION_Z执行的吗?或DURATION_Y动画按比例缩小或缩短相对于DURATION_X结束,假设DURATION_X <= DURATION_Y?

基本上,我简单地问我们如何安全地控制内部动画的持续时间,以确保它们执行DURATION_Y(而不是一些较短的版本),即使最外面的动画有不同的DURATION_X?

objective-c uiviewanimation ios

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

Windows 64位结构大小因包含的数据类型而异?

我有两个不同的数据结构,原则上应该具有相同的大小,我想知道他们为什么不这样做.

struct pix1 { 
    unsigned char r; 
    unsigned char g;
    unsigned char b; 
    unsigned char a; 
    unsigned char y[2]; 
 }; 

struct pix2 { 
    unsigned char r; 
    unsigned char g;
    unsigned char b; 
    unsigned char a; 
    unsigned short y; 
 }; 
Run Code Online (Sandbox Code Playgroud)

然后,我将这些像素中的四个组合在一起,如下:

struct pix4 {
    pix1 pixels[4]; // or pix2 pixels[4]
    unsigned char mask;
};
Run Code Online (Sandbox Code Playgroud)

...但事实证明,根据sizeof(pix4),这种分组的大小会发生变化,具体取决于我是使用pix1还是pix2.个别sizeof(pix1)== sizeof(pix2),所以我很困惑为什么分组四像素会改变大小.我关心的是因为用2个无符号字符来编写带有短路的程序比较容易,但是每个像素耗费我0.25个字节.

我不确定这个架构是否具体,因为我没有在其他类型的机器上测试过.它可以对齐吗?这是我需要担心的事情,还是我可以继续执行简短的实施?

感谢您的帮助.

c++ struct sizeof short

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

在iPhone上显示弹出透明窗口的最佳方法?

我正在Xcode 4.6中构建一个iOS 6 iPhone应用程序,我想知道实现以下类型的弹出窗口的最佳方法:

PopoverScreenshot

具体来说,右侧的iPhone截图,如果用户点击主窗口中的UIView或部分透明的弹出窗口,会出现更详细的信息 - 例如肖像照片和文本数据 - 但原始视图(这里的照片集)仍然可见,计时器/计数器继续在该视图中滴答作响.

我认为这将是一个可能的解决方案iPhone模态查看较小的屏幕,但它不适合我.上面没有显示的是取消按钮,我也打算将其放入popover中,以便用户可以返回到下面的视图.当计时器到期时,详细视图也会消失.

我应该使用presentModalViewController和演示者/演示方案,还是使用与故事板segue的父子视图关系,或者我应该使用loadNibNamed,还是某种黑客来克服iPhone显示非全屏模式的限制视图?它将覆盖屏幕的大部分,但我想确保下面的视图是可见的并且仍然是活动的,因为它向不在弹出框中的用户提供信息(计时器等).用户不需要与下面的屏幕进行交互,但我希望它部分可见.

我在我的主故事板中将弹出视图设计为单独的视图控制器,而不是作为xib文件.连接和出口由接口构建器到我的代码形成,称为ProfileViewController.

警告:我的术语可能不正确且不准确.弹出窗口或弹出窗口可以是UIView,UIViewController,UIWindow,或者以编程方式解决问题的最佳方法.我并不认为它是某种小部件类型,只要功能反映了我正在寻找的东西.

提前感谢您的建议!

iphone objective-c uiviewcontroller modalviewcontroller ios

4
推荐指数
3
解决办法
4万
查看次数

位移,位运算符中的Endian依赖关系

处理屏蔽或从整数中提取单个位的任何操作是否取决于字节顺序?我已经编写了一些代码,但只能访问一种类型的硬件,我无法确定它的运算符是否与字节序无关.如果您发现任何错误,请告诉我.注意:此代码是为家庭作业问题和个人启发而编写的:

 void PrintDecimalIntegerInBinary (long long n) 
 {  
    PrintDecimalInBinaryRecursion(n, n >= 0);
 }

 void PrintDecimalInBinaryRecursion (long long n, bool sign) 
 {
    if (n == 0) {
        cout << (sign ? 0x0 : 0x1);
    }
    else {
        PrintDecimalInBinaryRecursion((unsigned long long)n >> 1, sign);
    cout << (n & 0x1);
    }     
 }
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

binary bit-shift endianness bit

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

突出显示或放大所选单元格?

我正在UIViewController使用UICollectionView标准网格布局进行安排allowsMultipleSelection = NO.当用户选择一个单元格(通过handleTap选择UITapGestureRecognizer)时,我想执行以下一项或全部操作:

(1)突出显示/为单元格着色不同的颜色 - 更改其alpha和背景颜色

(2)稍微放大细胞而不改变其周围的任何其他细胞

(3)在修改后的单元框架或边界周围绘制边框

我目前正在使用以下函数,尽管选择了正确划分的单元格并且存储在局部变量中,但它永远不会被调用selectedCell.

-(CGSize) collectionView:(UICollectionView*)collectionView layout:(UICollectionViewFlowLayout*)layout sizeForItemAtIndexPath: (NSIndexPath*)indexPath
{
    if ([indexPath isEqual:selectedCellIndexPath]) 
 {

        return CGSizeMake([MyCollectionViewCell width] + 4, [MyCollectionViewCell height] + 4);
    } else {
        return CGSizeMake([MyCollectionViewCell width], [MyCollectionViewCell height]);
    }
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过这里建议的布局无效,但无论出于何种原因,它在我选择的单元格周围创建了一个巨大的缓冲区,扰乱了它周围的所有其他单元格(导致它们移动到新位置),然而内容(imageView) )在我放大的自定义单元格内部不会放大.即它内部的imageView保持相同的大小,即使我专门改变了imageView.frameimageView.image的大小:UICollectionView:选择时动画单元格大小更改

以下是更多示例代码,即使它在选定的单元格上执行也不起作用:

-(void) collectionView:(UICollectionView*)collectionView didSelectItemAtIndexPath:(NSIndexPath*)indexPath
{
    NSLog(@"Cell Selected!");
    MyCollectionViewCell* cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"StorageCell" forIndexPath:indexPath];
    MyImageView* selectedCellView = cell.imgView;

    MyCollectionViewFlowLayout* layout = (MyCollectionViewFlowLayout*)self.collection.collectionViewLayout;

    layout.currentCellPath = …
Run Code Online (Sandbox Code Playgroud)

objective-c ios uicollectionview

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