foldl несет ту же проблему; это создает преобразователя. Можно использовать foldl' от Данных. Список, чтобы избежать, что проблема:
import Data.List
myLength = foldl' (const.succ) 0
единственной разницей между foldl и foldl' является строгое накопление, таким образом, foldl' решает проблему таким же образом как seq и $! примеры выше. (const.succ) здесь работает то же (\a b-> a+1), хотя succ имеет менее строгий тип.
Эта переменная не является переменной класса / экземпляра. Каждый раз, когда файл заголовка включается в файл .m, компилятор создает новую статическую переменную с областью действия, ограниченной файлом, который включает этот заголовок. Если вы пытаетесь получить переменную уровня класса, переместите объявление в начало соответствующего файла .m.
Статическая переменная
имеет область видимости файла. Поскольку Xcode не может найти переменную, используемую в этом файле, он видит неиспользуемую переменную. Если вы действительно хотите, чтобы переменная была доступна из всей вашей программы, сделайте это объявление внешней переменной и определите ее в своей реализации. Если он предназначен только для использования этим классом, просто переместите статическую переменную в свой файл реализации.
Вы поместили classVar вне определения интерфейса. Это заставит компилятор подумать, что вы объявляете глобальную переменную, и, поскольку это выглядит как файл заголовка (.h), он также будет создан во всех файлах, включая этот файл заголовка. Я предполагаю, что предупреждение появляется при компиляции файла, отличного от MyViewController.m, который включает этот файл заголовка.
ИЗМЕНИТЬ Я предлагаю вам переместить classVar в файл .m для MyViewController (сначала неправильно интерпретировал то, что вы где)